Hví ein gomul WinINet proxy-hjálparløga brotnar í 64-bit bygging
Kenn vísara-avstuttning í C# proxy interop-dømum og hygg at bygnaði strukturanna og minnisogn, áðrenn tú nýtir tær aftur.
Ein einasta umskipan kann gera eina tilsýnandi vanliga proxy-stillingarhjálparløgu til ein brest, sum er arkitektur-ávirkin:
current = (IntPtr)((int)current + optionSize);
Hin kotan minkar eina upprunaliga adressu til eitt 32-bit heiltal, áðrenn støddin á næsta bygnaði verður løgd aftrat. Ein 64-bit prosess kann halda adressur, sum ikki passa. Alt eftir umskipanini og virðinum kann úrslitið vera eitt yvirrenningarvík ella ein ógildig adressa. At seta byggingina aftur til x86 kann fjala mistakið, men tað letur interop-útførsluna vera treytaða av tí fyribyrgingini.
Halt adressurnar í vísarastødd. Til dømis kann at ganga gjøgnum ein longu útpartan lista brúka:
IntPtr item = IntPtr.Add(buffer, checked(index * optionSize));
Avløgdið verður verandi eitt heiltal; sjálva adressan verður ikki trýst gjøgnum eitt. Støddin á útpartingini og indexurin mugu framvegis vera gildig.
Hygg so at kunngerðunum runt um
WinINet-stillingarnar fyri hvørja samband innihalda eina samstaving, sum hevur DWORD, eina streingjavísara og eina FILETIME sum limir. Vísarafeløgini tørva IntPtr; DWORD-feløgini verða verandi 32-bit. Upprunalig javnstilling hevur týdning, tí er at skifta hvørt heiltal út við eitt 64-bit heiltal ella at tvinga eitt pakkað uppset ein ikki haldgóð viðgerð.
Brúka støddina á bygnaðinum eftir marshaling, tá tú gongur gjøgnum listan, samsvarandi ANSI- ella Unicode-kunngerðina og far eftir hvørjari útparting sær. At frígera blokkin við stillingarbygnaðum frígerur ikki sjálvvirkandi streingir, sum eru útpartir aðrastaðni og vístir á av teimum bygnaðunum.
At enda, halt spurningin um umráðið hjá stillingunum skilt frá minnisrættvísinum. At bøta um eina umskipan prógvar ikki, at ein WinINet-stilling, sum ein hjálparløga velur, bert ávirkar eitt stýri, eina prosess ella stillingarnar hjá núverandi brúkara. Hygg at tí API-atferðini, áðrenn tú takar restina av einum gomlum dømi. Um hon eisini sendir frískingarboð, vel tær til tað ætlaða umráðið.