Għaliex helper antik tal-proxy WinINet jinkiser f'build 64-bit
Agħraf it-tqassir tal-pointer fil-eżempji tal-interop tal-proxy f'C# u rrevedi t-tqassim tal-istrutturi u s-sjieda tal-memorja qabel terġa' tużahom.
Cast wieħed jista' jbiddel helper tal-impostazzjonijiet tal-proxy li jidher ordinarju fi falliment dipendenti mill-arkitettura:
current = (IntPtr)((int)current + optionSize);
Dak il-kodiċi jnaqqas indirizz nattiv għal numru sħiħ ta' 32 bit qabel ma jżid id-daqs tal-istruttura li jmiss. Proċess ta' 64 bit jista' jżomm indirizzi li ma jaqblux. Skont il-konverżjoni u l-valur, ir-riżultat jista' jkun eċċezzjoni ta' overflow jew indirizz invalidu. Li terġa' ġġib il-build għal x86 tista' taħbi l-iżball, iżda tħalli l-implimentazzjoni tal-interop dipendenti minn dak ix-xogħol ta' madwar.
Żomm l-indirizzi fil-forma tad-daqs tal-pointer. Pereżempju, biex timxi minn firxa diġà allokata tista' tuża:
IntPtr item = IntPtr.Add(buffer, checked(index * optionSize));
L-offset jibqa' numru sħiħ; l-indirizz innifsu mhuwiex imġebbed minn wieħed. Id-daqs tal-allokazzjoni u l-indiċi għadhom iridu jkunu validi.
Imbagħad spezzjona d-dikjarazzjonijiet tal-madwar
L-għażliet WinINet għal kull konnessjoni fihom unjoni li l-membri tagħha jinkludu DWORD, pointer għal string u FILETIME. L-oqsma tal-pointer jeħtieġu IntPtr; l-oqsma DWORD jibqgħu ta' 32 bit. L-allinjament nattiv huwa importanti, għalhekk li tissostitwixxi kull numru sħiħ b'numru sħiħ ta' 64 bit jew li timponi tqassim ippakjat mhuwiex tiswija soda.
Uża d-daqs tal-istruttura wara l-marshaling meta tgħaddi mill-firxa, qabbel id-dikjarazzjoni ANSI jew Unicode b'mod konsistenti, u segwi kull allokazzjoni separatament. Il-ħelsien tal-blokk tal-istrutturi tal-għażliet ma jeħlisx awtomatikament strings allokati band'oħra u riferiti minn dawk l-istrutturi.
Fl-aħħar, żomm il-kwistjoni tal-ambitu tal-impostazzjonijiet separata mill-korrettezza tal-memorja. It-tiswija ta' cast ma tipprovax li għażla WinINet magħżula minn helper taffettwa biss kontroll wieħed, proċess wieħed jew l-impostazzjonijiet tal-utent attwali. Iċċekkja dak l-imġieba tal-API qabel ma tadotta l-bqija ta' kampjun antik. Jekk dan jibgħat ukoll notifiki ta' aġġornament, agħżilhom għall-ambitu maħsub.