SafeBuffer Class

.NET Framework (current version)
 

Provides a controlled memory buffer that can be used for reading and writing. Attempts to access memory outside the controlled buffer (underruns and overruns) raise exceptions.

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


[SecurityCriticalAttribute]
public ref class SafeBuffer abstract : SafeHandleZeroOrMinusOneIsInvalid

NameDescription
System_CAPS_protmethodSafeBuffer(Boolean)

Creates a new instance of the SafeBuffer class, and specifies whether the buffer handle is to be reliably released.

NameDescription
System_CAPS_pubpropertyByteLength

Gets the size of the buffer, in bytes.

System_CAPS_pubpropertyIsClosed

Gets a value indicating whether the handle is closed.(Inherited from SafeHandle.)

System_CAPS_pubpropertyIsInvalid

Gets a value that indicates whether the handle is invalid.(Inherited from SafeHandleZeroOrMinusOneIsInvalid.)

NameDescription
System_CAPS_pubmethodAcquirePointer(Byte*%)

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

System_CAPS_pubmethodClose()

Marks the handle for releasing and freeing resources.(Inherited from SafeHandle.)

System_CAPS_pubmethodDangerousAddRef(Boolean%)

Manually increments the reference counter on SafeHandle instances.(Inherited from SafeHandle.)

System_CAPS_pubmethodDangerousGetHandle()

Returns the value of the handle field.(Inherited from SafeHandle.)

System_CAPS_pubmethodDangerousRelease()

Manually decrements the reference counter on a SafeHandle instance.(Inherited from SafeHandle.)

System_CAPS_pubmethodDispose()

Releases all resources used by the SafeHandle class.(Inherited from SafeHandle.)

System_CAPS_protmethodDispose(Boolean)

Releases the unmanaged resources used by the SafeHandle class specifying whether to perform a normal dispose operation.(Inherited from SafeHandle.)

System_CAPS_pubmethodEquals(Object^)

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_protmethodFinalize()

Frees all resources associated with the handle.(Inherited from SafeHandle.)

System_CAPS_pubmethodGetHashCode()

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_pubmethodInitialize(UInt32, UInt32)

Specifies the allocation size of the memory buffer by using the specified number of elements and element size. You must call this method before you use the SafeBuffer instance.

System_CAPS_pubmethodInitialize(UInt64)

Defines the allocation size of the memory region in bytes. You must call this method before you use the SafeBuffer instance.

System_CAPS_pubmethodInitialize<T>(UInt32)

Defines the allocation size of the memory region by specifying the number of value types. You must call this method before you use the SafeBuffer instance.

System_CAPS_protmethodMemberwiseClone()

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_pubmethodRead<T>(UInt64)

Reads a value type from memory at the specified offset.

System_CAPS_pubmethodReadArray<T>(UInt64, array<T>^, Int32, Int32)

Reads the specified number of value types from memory starting at the offset, and writes them into an array starting at the index.

System_CAPS_protmethodReleaseHandle()

When overridden in a derived class, executes the code required to free the handle.(Inherited from SafeHandle.)

System_CAPS_pubmethodReleasePointer()

Releases a pointer that was obtained by the AcquirePointer method.

System_CAPS_protmethodSetHandle(IntPtr)

Sets the handle to the specified pre-existing handle.(Inherited from SafeHandle.)

System_CAPS_pubmethodSetHandleAsInvalid()

Marks a handle as no longer used.(Inherited from SafeHandle.)

System_CAPS_pubmethodToString()

Returns a string that represents the current object.(Inherited from Object.)

System_CAPS_pubmethodWrite<T>(UInt64, T)

Writes a value type to memory at the given location.

System_CAPS_pubmethodWriteArray<T>(UInt64, array<T>^, Int32, Int32)

Writes the specified number of value types to a memory location by reading bytes starting from the specified location in the input array.

NameDescription
System_CAPS_protfieldhandle

Specifies the handle to be wrapped.(Inherited from SafeHandle.)

You must call the SafeBuffer::Initialize method before you use any instance of SafeBuffer. To avoid races when you store an instance of a SafeBuffer object in a static variable, you should use one of the following approaches:

  • Create a lock when publishing the SafeBuffer.

  • Create a local variable, initialize the SafeBuffer, and then assign the SafeBuffer to the static variable, for example, by using the Interlocked::CompareExchange<T> method.

System_CAPS_noteNote

Assignments in a static class constructor are implicitly locked.

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Universal Windows Platform
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show: