Compartilhar via


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 nullfor , você deverá 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 .

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 esse ponteiro.

Aplica-se a