Sdílet prostřednictvím


SafeBuffer.AcquirePointer(Byte*) Metoda

Definice

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.

Platí pro