Juyi ɗaya zai iya mai da mataimakin saitin proxy da ake gani na yau da kullum zuwa gazawar da ta dogara da gine-gine:

current = (IntPtr)((int)current + optionSize);

Wannan lambar tana taƙaita adireshin asali zuwa cikakken lamba na 32-bit kafin ƙara girman tsarin na gaba. Tsarin aiki na 64-bit zai iya riƙe adiresoshin da ba su dace ba. Dangane da juyin da ƙimar, sakamakon zai iya zama keɓewar ambaliya ko adireshin da ba shi da inganci. Mayar da ginin zuwa x86 zai iya ɓoye kuskuren, amma yana barin aiwatarwar interop ta dogara da wannan hanyar wucewa.

Riƙe adiresoshi cikin girman mai nuni. Misali, tafiya cikin tsarar da aka riga aka ware na iya amfani da:

IntPtr item = IntPtr.Add(buffer, checked(index * optionSize));

Matsayin yana zama cikakken lamba; ba a matse adireshin kansa ta cikinsa. Girman rabon da ma'aunin dole su kasance masu inganci har yanzu.

Sannan a duba sanarwar da ke kewaye

Zaɓuɓɓukan WinINet na kowane haɗi suna ɗauke da haɗin kai wanda membobinsa suka haɗa da DWORD, mai nuni na zare da FILETIME. Filayen mai nuni suna buƙatar IntPtr; filayen DWORD suna zama 32-bit. Daidaitawa ta asali tana da mahimmanci, don haka maye gurbin kowace cikakkiyar lamba da cikakkiyar lamba ta 64-bit ko tilasta tsarin da aka tattara ba gyara mai kyau ba ne.

Yi amfani da girman tsarin bayan marshaling yayin da kake wucewa cikin tsarar, daidaita sanarwar ANSI ko Unicode akai-akai, kuma bi kowane rabo daban. Sakin toshewar tsarin zaɓuɓɓuka ba ya sakin zaren da aka ware a wani wuri kuma waɗannan tsarin suke magana da su kai tsaye.

A ƙarshe, raba tambayar iyakar saiti daga daidaiton ƙwaƙwalwa. Gyara juyi ba ya tabbatar da cewa zaɓin WinINet da mataimaki ya zaɓa yana shafar iko ɗaya, tsari ɗaya ko saitunan mai amfani na yanzu kawai. Bincika wannan halin API kafin karɓar sauran tsohon misali. Idan yana kuma aika sanarwar sabuntawa, zaɓe su don iyakar da aka nufa.

Labarai masu alaƙa