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