I-cast eyodwa ingashintsha umsizi wezilungiselelo ze-proxy obonakala uvamile ube ukwehluleka okuncike ekwakhiweni:

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

Leyo khodi inciphisa ikheli lomdabu libe yinombolo ephelele ye-32-bit ngaphambi kokwengeza usayizi wesakhiwo esilandelayo. Inqubo ye-64-bit ingagcina amakheli angangeni. Kuye ngokuguqulwa nangevelu, umphumela ungaba isikhathi sokuchichima noma ikheli elingavumelekile. Ukubuyisela i-build ku-x86 kungafihla iphutha, kodwa kushiya ukusetshenziswa kwe-interop kuncike kulelo qhinga.

Gcina amakheli esimweni sosayizi we-pointer. Isibonelo, ukuhamba ku-array esivele yabiwe kungasebenzisa:

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

I-offset ihlala iyinombolo ephelele; ikheli ngokwalo alicindezelwa ngayo. Usayizi wokwabiwa kanye nenkomba kusamele kube semthethweni.

Bese uhlola izimemezelo ezizungezile

Izinketho ze-WinINet zokuxhumana ngakunye ziqukethe inyunyana enezinto ezihlanganisa i-DWORD, i-pointer yechashazi kanye ne-FILETIME. Izinkambu ze-pointer zidinga IntPtr; izinkambu ze-DWORD zihlala zingama-32-bit. Ukuqondanisa komdabu kubalulekile, ngakho ukufaka yonke inombolo ephelele ngenombolo ephelele ye-64-bit noma ukuphoqelela ukuhlelwa okupakiwe akulona ikhambi eliqinile.

Sebenzisa usayizi wesakhiwo ngemva kwe-marshaling uma uhamba ku-array, fanisa isimemezelo se-ANSI noma se-Unicode ngokungaguquki, futhi landelela ukwabiwa ngakunye ngokwehlukana. Ukukhulula ibhloko lezakhiwo zezinketho akukhululi ngokuzenzakalela izichashazi ezabiwe kwenye indawo futhi ezibhekiselwa yilezo zakhiwo.

Ekugcineni, hlukanisa umbuzo wobubanzi bezilungiselelo nokunemba kwememori. Ukulungisa i-cast akufakazi ukuthi inketho ye-WinINet ekhethiwe ithinta kuphela isilawuli esisodwa, inqubo eyodwa noma izilungiselelo zomsebenzisi wamanje. Hlola lokho kuziphatha kwe-API ngaphambi kokwamukela ingxenye esele yesibonelo sakudala. Uma futhi ithumela izaziso zokuvuselela, khetha lezo kububanzi obuhlosiwe.

Izihloko ezihlobene