SafeBuffer::AcquirePointer Method (Byte*%)
Obtains a pointer from a SafeBuffer object for a block of memory.
This API is not CLS-compliant.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- pointer
-
Type:
System::Byte*%
A byte pointer, passed by reference, to receive the pointer from within the SafeBuffer object. You must set this pointer to null before you call this method.
| Exception | Condition |
|---|---|
| InvalidOperationException | The SafeBuffer::Initialize method has not been called. |
When AcquirePointer returns, you should perform bounds checking by verifying that the pointer parameter is null. If it is not null, you must call the SafeBuffer::ReleasePointer method in a constrained execution region (CER).
AcquirePointer calls the SafeHandle::DangerousAddRef method and exposes the pointer. Unlike the Read<T> method, it does not change the current position of the pointer.
The following exampledemonstrates how to use the AcquirePointer method:
byte* pointer = null;
RuntimeHelpers.PrepareConstrainedRegions();
try {
MySafeBuffer.AcquirePointer(ref pointer);
// Use pointer here, with your own bounds checking.
}
finally {
if (pointer != null)
MySafeBuffer.ReleasePointer();
}
If you cast pointer (which is a pointer to a byte) as a pointer to a different type (T*), you may have pointer alignment issues.
You must take responsibility for all bounds checking with this pointer.
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1