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