Поделиться через


SafeBuffer.AcquirePointer(Byte*) Метод

Определение

Важно!

Этот API несовместим с CLS.

Получает из объекта SafeBuffer указатель для блока памяти.

public:
 void AcquirePointer(System::Byte* % pointer);
[System.CLSCompliant(false)]
public void AcquirePointer (ref byte* pointer);
[<System.CLSCompliant(false)>]
member this.AcquirePointer : Byte* -> unit

Параметры

pointer
Byte*

Указатель байта, передаваемый по ссылке, для получения указателя из объекта SafeBuffer. Необходимо присвоить этому указателю значение null, прежде чем вызывать этот метод.

Атрибуты

Исключения

Метод Initialize не был вызван.

Комментарии

При AcquirePointer возврате необходимо выполнить проверку границ, убедившись, что pointer параметр имеет значение null. Если это не null, необходимо вызвать SafeBuffer.ReleasePointer метод в области ограниченного выполнения (CER).

AcquirePointer SafeHandle.DangerousAddRef вызывает метод и предоставляет указатель.

В следующем примере показано, как использовать AcquirePointer метод :

byte* pointer = null;  
RuntimeHelpers.PrepareConstrainedRegions();  
try {  
    MySafeBuffer.AcquirePointer(ref pointer);  
    // Use pointer here, with your own bounds checking.  
    }  
finally {  
    if (pointer != null)  
        MySafeBuffer.ReleasePointer();  
    }  

При приведение pointer (который является указателем на байт) в качестве указателя на другой тип (T*), возможно, возникли проблемы с выравниванием указателя.

Вы должны взять на себя ответственность за проверку всех границ с помощью этого указателя.

Применяется к