Método SafeBuffer.AcquirePointer (Byte*)
Dica
The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.
Obtém um ponteiro de um objeto SafeBuffer para um bloco de memória.
Esta API não é compatível com CLS.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (em mscorlib.dll)
Sintaxe
[CLSCompliantAttribute(false)]
public unsafe void AcquirePointer(
ref byte* pointer
)
public:
[CLSCompliantAttribute(false)]
void AcquirePointer(
unsigned char*% pointer
)
[<CLSCompliantAttribute(false)>]
member AcquirePointer :
pointer:nativeptr<byte> byref -> unit
O Visual Basic não dá suporte para as APIs que consomem ou retornam tipos não seguros.
Parâmetros
pointer
Type: System.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.
Exceções
Exception | Condition |
---|---|
InvalidOperationException | O método SafeBuffer.Initialize não foi chamado. |
Comentários
Quando AcquirePointer retorna, você deve executar, verificando se a verificação de limites de pointer parâmetro é null. Se não for null, você deve chamar o SafeBuffer.ReleasePointer método em uma região de execução restrita (CER).
AcquirePointerchama o SafeHandle.DangerousAddRef método e expõe o ponteiro. Ao contrário de Read<T> método, ele não altera a posição atual do ponteiro.
A seguir exampledemonstrates 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 para todos os limites verificando com esse ponteiro.
Informações de Versão
Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 4.0
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Windows Phone
Disponível desde 8.1
Confira Também
Classe SafeBuffer
Namespace System.Runtime.InteropServices
Retornar ao início