SafeBuffer.AcquirePointer(Byte*) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Importante
Questa API non è conforme a CLS.
Ottiene un puntatore da un oggetto SafeBuffer per un blocco di memoria.
public:
void AcquirePointer(System::Byte* % pointer);
[System.CLSCompliant(false)]
public void AcquirePointer (ref byte* pointer);
[<System.CLSCompliant(false)>]
member this.AcquirePointer : Byte* -> unit
Parametri
- pointer
- Byte*
Puntatore di byte, passato per riferimento, per ricevere il puntatore dall'interno dell'oggetto SafeBuffer. È necessario impostare questo puntatore a null
prima di chiamare questo metodo.
- Attributi
Eccezioni
Il metodo Initialize non è stato chiamato.
Commenti
Quando AcquirePointer restituisce, è necessario eseguire il controllo dei limiti verificando che il pointer
parametro sia null
. Se non null
è , è necessario chiamare il metodo in un'area SafeBuffer.ReleasePointer di esecuzione vincolata (CER).
AcquirePointer chiama il SafeHandle.DangerousAddRef metodo ed espone il puntatore.
Nell'esempio seguente viene illustrato come usare il AcquirePointer metodo:
byte* pointer = null;
RuntimeHelpers.PrepareConstrainedRegions();
try {
MySafeBuffer.AcquirePointer(ref pointer);
// Use pointer here, with your own bounds checking.
}
finally {
if (pointer != null)
MySafeBuffer.ReleasePointer();
}
Se si esegue il cast pointer
(ovvero un puntatore a un byte) come puntatore a un tipo diverso (T*), è possibile che si verifichino problemi di allineamento del puntatore.
È necessario prendere la responsabilità di tutti i limiti di controllo con questo puntatore.