SafeBuffer.AcquirePointer(Byte*) Method
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Important
This API is not CLS-compliant.
Obtains a pointer from a SafeBuffer object for a block of memory.
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*
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.
- Attributes
The 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.
The following example demonstrates 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.
Product | Versions |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9 |
.NET Framework | 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1 |
UWP | 10.0 |
.NET feedback
.NET is an open source project. Select a link to provide feedback: