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 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 null
for , 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.