SafeBuffer.AcquirePointer(Byte*) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Importante
Esta API no es conforme a CLS.
Obtiene un puntero de un objeto SafeBuffer para un bloque de memoria.
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*
Puntero de byte, pasado por referencia, para recibir el puntero desde dentro del objeto SafeBuffer. Debe establecer este puntero en null
antes de llamar a este método.
- Atributos
Excepciones
No se ha llamado al método Initialize.
Comentarios
Cuando AcquirePointer devuelve , debe realizar la comprobación de límites comprobando que el pointer
parámetro es null
. Si no null
es , debe llamar al SafeBuffer.ReleasePointer método en una región de ejecución restringida (CER).
AcquirePointer llama al SafeHandle.DangerousAddRef método y expone el puntero.
En el ejemplo siguiente se muestra cómo usar 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 puntero a un tipo diferente (T*), es posible que tenga problemas de alineación del puntero.
Debe asumir la responsabilidad de todas las comprobaciones de límites con este puntero.