ហេតុអ្វីបានជាជំនួយការ WinINet proxy ចាស់ខូចនៅក្នុង build 64-bit
ស្គាល់ការកាត់ចំណុចបញ្ជូននៅក្នុងឧទាហរណ៍ interop proxy C# ហើយពិនិត្យប្លង់រចនាសម្ព័ន្ធ និងកម្មសិទ្ធិអង្គចងចាំ មុនពេលប្រើវាឡើងវិញ។
ការ cast មួយអាចប្រែជំនួយការកំណត់ proxy ដែលមើលទៅធម្មតាទៅជាការបរាជ័យដែលពឹងលើស្ថាបត្យកម្ម៖
current = (IntPtr)((int)current + optionSize);
កូដនោះបង្រួមអាសយដ្ឋានដើមទៅជាចំនួនគត់ 32-bit មុនពេលបន្ថែមទំហំរចនាសម្ព័ន្ធបន្ទាប់។ ដំណើរការ 64-bit អាចផ្ទុកអាសយដ្ឋានដែលមិនសម។ អាស្រ័យលើការបំប្លែង និងតម្លៃ លទ្ធផលអាចជាការលើសចំណុះ ឬអាសយដ្ឋានមិនត្រឹមត្រូវ។ ការត្រឡប់ build ទៅ x86 អាចបិទបាំងកំហុស ប៉ុន្តែទុកការអនុវត្ត interop ឱ្យពឹងលើដំណោះស្រាយបណ្តោះអាសន្ននោះ។
រក្សាអាសយដ្ឋានជាទម្រង់ទំហំចំណុចបញ្ជូន។ ឧទាហរណ៍ ដើម្បីដើរឆ្លងកាត់អារេដែលបានបែងចែករួច អាចប្រើ៖
IntPtr item = IntPtr.Add(buffer, checked(index * optionSize));
អុហ្វសិតនៅជាចំនួនគត់។ អាសយដ្ឋានខ្លួនវាមិនត្រូវបានច្របាច់តាមរយៈវាទេ។ ទំហំបែងចែក និងសន្ទស្សន៍នៅតែត្រូវតែមានសុពលភាព។
បន្ទាប់មកពិនិត្យការប្រកាសនៅជុំវិញ
ជម្រើស WinINet ក្នុងមួយការតភ្ជាប់មាន union ដែលសមាជិករួមមាន DWORD ចំណុចបញ្ជូនខ្សែអក្សរ និង FILETIME។ វាលចំណុចបញ្ជូនត្រូវការ IntPtr; វាល DWORD នៅ 32-bit។ ការតម្រឹមដើមមានសារៈសំខាន់ ដូច្នេះការជំនួសចំនួនគត់នីមួយៗដោយចំនួនគត់ 64-bit ឬការបង្ខំប្លង់ខ្ចប់មិនមែនជាការជួសជុលត្រឹមត្រូវទេ។
ប្រើទំហំរចនាសម្ព័ន្ធបន្ទាប់ពី marshaling ពេលដើរឆ្លងកាត់អារេ ផ្គូផ្គងការប្រកាស ANSI ឬ Unicode ឱ្យស្របគ្នា ហើយតាមដានការបែងចែកនីមួយៗដោយឡែក។ ការដោះលែងប្លុករចនាសម្ព័ន្ធជម្រើសមិនដោះលែងខ្សែអក្សរដែលបានបែងចែកនៅកន្លែងផ្សេង ហើយរចនាសម្ព័ន្ធទាំងនោះយោងទៅលើដោយស្វ័យប្រវត្តិទេ។
ចុងក្រោយ បែងចែកសំណួរអំពីវិសាលភាពនៃការកំណត់ចេញពីភាពត្រឹមត្រូវនៃអង្គចងចាំ។ ការជួសជុល cast មិនបញ្ជាក់ថាជម្រើស WinINet ដែលជំនួយការជ្រើសរើសប៉ះពាល់តែវិនិយោគមួយ ដំណើរការមួយ ឬការកំណត់របស់អ្នកប្រើបច្ចុប្បន្នទេ។ ពិនិត្យឥរិយាបថ API នោះ មុនពេលយកឧទាហរណ៍ចាស់ដែលនៅសល់។ ប្រសិនបើវាក៏ផ្ញើការជូនដំណឹងធ្វើឱ្យស្រស់ផងដែរ ជ្រើសពួកវាសម្រាប់វិសាលភាពដែលបានបម្រុង។