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