ولې زوړ WinINet پروکسي مرستندوی په 64-بټ جوړښت کې ماتېږي
په C# پروکسي interop بېلګو کې د اشارې کوونکي پرېکول وپېژنئ او د بیا کارولو دمخه د جوړښت ترتیب او د حافظې مالکیت وګورئ.
یو کاسټ کولی شي یو عادي ښکاره د پروکسي تنظیماتو مرستندوی په معماري پورې تړلې ناکامۍ بدل کړي:
current = (IntPtr)((int)current + optionSize);
هغه کوډ د بل جوړښت اندازه د زیاتولو دمخه اصلي پته 32-بټه بشپړه شمېره ته تنګوي. 64-بټه پروسه کولی شي داسې پتې وساتي چې نه ځایېږي. د بدلون او ارزښت پورې اړه لري، پایله کېدای شي د ډکېدو استثنا یا ناسمه پته وي. جوړښت x86 ته بېرته اړول کېدای شي تېروتنه پټه کړي، خو interop پلي کول پر هغه حل پورې تړلي پاتې کوي.
پتې د اشارې کوونکي اندازې په بڼه وساتئ. د بېلګې په توګه، د لا دمخه ځانګړي شوي ارې له لارې تګ لپاره دا کارول کېدای شي:
IntPtr item = IntPtr.Add(buffer, checked(index * optionSize));
افسیټ بشپړه شمېره پاتې کېږي؛ پته پخپله د هغې له لارې نه ټینګېږي. د ځانګړنې اندازه او شاخص باید لا هم سم وي.
بیا شاوخوا اعلانونه وګورئ
د WinINet د هرې اړیکې اختیارونه یوه یونین لري چې غړي یې DWORD، د تار اشارې کوونکی او FILETIME شامل دي. د اشارې کوونکي ساحې IntPtr ته اړتیا لري؛ DWORD ساحې 32-بټې پاتې کېږي. اصلي سمون مهم دی، نو هر بشپړه شمېره په 64-بټه بشپړه شمېره بدلول یا بډ شوی ترتیب تحمیلول سمه ترمیم نه دی.
د ارې له لارې تګ پر مهال د marshaling وروسته د جوړښت اندازه وکاروئ، د ANSI یا Unicode اعلان په دوامداره توګه سره سمون ورکړئ، او هر ځانګړنه جلا تعقیب کړئ. د اختیارونو د جوړښتونو بلاک خوشې کول په بل ځای ځانګړي شوي او د هغو جوړښتونو لخوا راجع شوي تارونه په اتوماتيک ډول نه خوشې کوي.
په پای کې، د تنظیماتو د حد پوښتنه د حافظې له سمون څخه جلا وساتئ. د کاسټ ترمیم دا نه ثابتوي چې مرستندوی ټاکلی WinINet اختیار یوازې یو کنټرول، یو بهیر یا د اوسني کاروونکي تنظیمات اغېزمنوي. د زوړ بېلګې پاتې برخې منلو دمخه هغه API چلند وګورئ. که دا د تازه کولو خبرتیاوې هم واستوي، دغه د پام وړ حد لپاره وټاکئ.