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*), у вас могут возникнуть проблемы с выравниванием указателя.

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

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