SafeBuffer.AcquirePointer(Byte*) Método

Definição

Importante

Esta API não está em conformidade com CLS.

Obtém um ponteiro de um objeto SafeBuffer para um bloco de memória.

public:
 void AcquirePointer(System::Byte* % pointer);
[System.CLSCompliant(false)]
public void AcquirePointer (ref byte* pointer);
[<System.CLSCompliant(false)>]
member this.AcquirePointer : Byte* -> unit

Parâmetros

pointer
Byte*

Um ponteiro de bytes, transmitido pela referência, para receber o ponteiro de dentro do objeto SafeBuffer. É necessário definir esse ponteiro como null antes de chamar este método.

Atributos

Exceções

O método Initialize não foi chamado.

Comentários

Quando AcquirePointer retorna, você deve executar a verificação de limites verificando se o pointer parâmetro é null. Se não nullestiver, você deve chamar o SafeBuffer.ReleasePointer método em uma CER (região de execução restrita).

AcquirePointer chama o SafeHandle.DangerousAddRef método e expõe o ponteiro. Ao contrário do Read método, ele não altera a posição atual do ponteiro.

O exemplo a seguir demonstra como usar o AcquirePointer método:

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 você converter pointer (que é um ponteiro para um byte) como um ponteiro para um tipo diferente (T*), poderá ter problemas de alinhamento de ponteiro.

Você deve assumir a responsabilidade por todas as verificações de limites com este ponteiro.

Aplica-se a