Compartir a través de


Método SafeBuffer.AcquirePointer (Byte*)

 

Publicado: octubre de 2016

Obtiene un puntero de un SafeBuffer objeto para un bloque de memoria.

Esta API no es conforme a CLS.

Espacio de nombres:   System.Runtime.InteropServices
Ensamblado:  mscorlib (en mscorlib.dll)

Sintaxis

[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
Visual Basic no admite API que consuman o devuelvan tipos no seguros.

Parámetros

  • pointer
    Type: System.Byte*

    Un puntero de byte, pasado por referencia, para recibir el puntero desde el SafeBuffer objeto. Debe establecer este puntero en null antes de llamar a este método.

Excepciones

Exception Condition
InvalidOperationException

El SafeBuffer.Initialize no se ha llamado al método.

Comentarios

Cuando AcquirePointer devuelve, debe realizar la comprobación, compruebe que la pointer parámetro es null. Si no es null, debe llamar a la SafeBuffer.ReleasePointer método en una región de ejecución restringida (CER).

AcquirePointer llamadas del SafeHandle.DangerousAddRef (método) y expone el puntero. A diferencia de la Read<T> (método), no cambia la posición actual del puntero.

El siguiente exampledemonstrates cómo utilizar el 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();
    }

Si convierte pointer (que es un puntero a un byte) como un puntero a un tipo diferente (T *), puede tener problemas de alineación del puntero.

Debe asumir la responsabilidad de comprobar con este puntero todos los límites.

Información de versión

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 4.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Windows Phone
Disponible desde 8.1

Ver también

Clase SafeBuffer
Espacio de nombres System.Runtime.InteropServices

Volver al principio