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).

AcquirePointerSafeHandle.DangerousAddRef вызывает метод и предоставляет указатель. Read В отличие от метода, он не изменяет текущее положение указателя.

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

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

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