Condividi tramite


SafeBuffer.AcquirePointer(Byte*) Metodo

Definizione

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.

Si applica a