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.

Artikli relatati