Compartilhar via


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