SafeBuffer.AcquirePointer(Byte*) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Důležité
Toto rozhraní API neodpovídá specifikaci CLS.
Získá ukazatel z objektu SafeBuffer pro blok paměti.
public:
void AcquirePointer(System::Byte* % pointer);
[System.CLSCompliant(false)]
public void AcquirePointer (ref byte* pointer);
[<System.CLSCompliant(false)>]
member this.AcquirePointer : Byte* -> unit
Parametry
- pointer
- Byte*
Bajtový ukazatel předaný odkazem pro příjem ukazatele z objektu SafeBuffer . Tento ukazatel musíte nastavit na null
před voláním této metody.
- Atributy
Výjimky
Metoda Initialize nebyla volána.
Poznámky
Při AcquirePointer návratu byste měli provést kontrolu hranic ověřením, že pointer
parametr je null
. Pokud není null
, musíte volat metodu SafeBuffer.ReleasePointer v oblasti omezeného provádění (CER).
AcquirePointer volá metodu SafeHandle.DangerousAddRef a zveřejňuje ukazatel.
Následující příklad ukazuje, jak použít metodu AcquirePointer :
byte* pointer = null;
RuntimeHelpers.PrepareConstrainedRegions();
try {
MySafeBuffer.AcquirePointer(ref pointer);
// Use pointer here, with your own bounds checking.
}
finally {
if (pointer != null)
MySafeBuffer.ReleasePointer();
}
Pokud přetypujete pointer
(což je ukazatel na bajt) jako ukazatel na jiný typ (T*), může dojít k problémům se zarovnáním ukazatele.
Musíte převzít odpovědnost za kontrolu všech hranic pomocí tohoto ukazatele.