Export (0) Print
Expand All

SafeBuffer.AcquirePointer Method

Obtains a pointer from a SafeBuffer object for a block of memory.

This API is not CLS-compliant. 

Namespace:  System.Runtime.InteropServices
Assembly:  mscorlib (in mscorlib.dll)

[CLSCompliantAttribute(false)]
public void AcquirePointer(
	ref byte* pointer
)

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.

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

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4

.NET Framework Client Profile

Supported in: 4

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1

Windows Phone 8.1, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft