Firwat en ale WinINet-Proxy-Helfer an engem 64-Bit-Build briechen
Erkenne Punktetrunkéierung a C#-Proxy-Interop-Beispiller an iwwerpréif d'Strukturlayout an d'Speichereigentum, ier Dir se nach eng Kéier benotzt.
Een eenzegen Cast kann aus engem schäinbar gewéinlechen Proxy-Astellungshelfer eng Architektur-ofhängeg Fehlfunktioun maachen:
current = (IntPtr)((int)current + optionSize);
Deen Code engt eng natives Adress op eng 32-Bit-Ganzzuel an, ier d'Gréisst vun der nächster Struktur derbäigesat gëtt. E 64-Bit-Prozess kann Adressen halen, déi net dra passen. Ofhängeg vun der Konversioun an dem Wäert kann d'Resultat eng Iwwerlaf-Ausnahm oder eng ongülteg Adress sinn. De Build zréck op x86 ze setzen kann de Feeler verstoppen, awer léisst d'Interop-Implementatioun vun deem Workaround ofhänken.
Halt d'Adressen a Punktetgréisst. Zum Beispill kann een duerch en déjà zougewisenen Array esou virugoen:
IntPtr item = IntPtr.Add(buffer, checked(index * optionSize));
Den Offset bleift eng Ganzzuel; d'Adress selwer gëtt net duerch eng gedréckt. D'Gréisst vun der Zouwaisung an den Index musse weider gülteg sinn.
Dann iwwerpréif d'Deklaratiounen ronderëm
D'WinINet-Optiounen pro Verbindung enthalen eng Unioun, deenen hir Memberen en DWORD, e Stringpunktéier an eng FILETIME enthalen. Punktetfelder brauchen IntPtr; DWORD-Felder bleiwen 32-Bit. Nativ Ausriichtung ass wichteg, dofir ass et keng gutt Reparatur, all Ganzzuel duerch eng 64-Bit-Ganzzuel z'ersetzen oder eng gepackte Layout ze forcéieren.
Benotz d'Strukturgréisst nom Marshaling, wann s du duerch den Array gees, gläich d'ANSI- oder Unicode-Deklaratioun konsequent of, a verfolleg all Zouwaisung eenzel. D'Fräisetze vum Block mat Optiounsstrukturen entléist net automatesch Strings, déi soss ewou zougewisen a vun deene Strukturen referenzéiert ginn.
Zum Schluss, halt d'Fro vum Astellungsberäich getrennt vun der Speicherkorrektheet. Eng Cast ze reparéiere beweise net, datt eng gewielten WinINet-Optioun nëmmen ee Steierement, een Prozess oder d'Astellunge vum aktuelle Benotzer beaflosst. Préif dat API-Verhalen, ier s de Rescht vun engem ale Beispill iwwerhëls. Wann et och Erfrëschungsnotifikatiounen schéckt, wielt se fir de virgesinnene Beräich.