SafeBuffer.AcquirePointer(Byte*) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Importante
Esta API não está em conformidade com CLS.
Obtém um ponteiro de um SafeBuffer objeto 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, passado por referência, para receber o ponteiro de dentro do SafeBuffer objeto. Você deve definir esse ponteiro para null antes de chamar esse método.
- Atributos
Exceções
O Initialize método 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.
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*), você poderá ter problemas de alinhamento de ponteiro.
Você deve assumir a responsabilidade por todas as verificações de limites com este ponteiro.