SafeBuffer Class
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.
Assembly: mscorlib (in mscorlib.dll)
| Name | Description | |
|---|---|---|
![]() | SafeBuffer(Boolean) | Creates a new instance of the SafeBuffer class, and specifies whether the buffer handle is to be reliably released. |
| Name | Description | |
|---|---|---|
![]() | ByteLength | Gets the size of the buffer, in bytes. |
![]() | IsClosed | Gets a value indicating whether the handle is closed.(Inherited from SafeHandle.) |
![]() | IsInvalid | Gets a value that indicates whether the handle is invalid.(Inherited from SafeHandleZeroOrMinusOneIsInvalid.) |
| Name | Description | |
|---|---|---|
![]() | AcquirePointer(Byte*) | Obtains a pointer from a SafeBuffer object for a block of memory. |
![]() | Close() | Marks the handle for releasing and freeing resources.(Inherited from SafeHandle.) |
![]() | DangerousAddRef(Boolean) | Manually increments the reference counter on SafeHandle instances.(Inherited from SafeHandle.) |
![]() | DangerousGetHandle() | Returns the value of the handle field.(Inherited from SafeHandle.) |
![]() | DangerousRelease() | Manually decrements the reference counter on a SafeHandle instance.(Inherited from SafeHandle.) |
![]() | Dispose() | Releases all resources used by the SafeHandle class.(Inherited from SafeHandle.) |
![]() | Dispose(Boolean) | Releases the unmanaged resources used by the SafeHandle class specifying whether to perform a normal dispose operation.(Inherited from SafeHandle.) |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Frees all resources associated with the handle.(Inherited from SafeHandle.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | Initialize(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. |
![]() | Initialize(UInt64) | Defines the allocation size of the memory region in bytes. You must call this method before you use the SafeBuffer instance. |
![]() | Initialize<'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. |
![]() | MemberwiseClone() | |
![]() | Read<'T>(UInt64) | Reads a value type from memory at the specified offset. |
![]() | ReadArray<'T>(UInt64, '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. |
![]() | ReleaseHandle() | When overridden in a derived class, executes the code required to free the handle.(Inherited from SafeHandle.) |
![]() | ReleasePointer() | Releases a pointer that was obtained by the AcquirePointer method. |
![]() | SetHandle(IntPtr) | Sets the handle to the specified pre-existing handle.(Inherited from SafeHandle.) |
![]() | SetHandleAsInvalid() | Marks a handle as no longer used.(Inherited from SafeHandle.) |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
![]() | Write<'T>(UInt64, 'T) | Writes a value type to memory at the given location. |
![]() | WriteArray<'T>(UInt64, '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. |
| Name | Description | |
|---|---|---|
![]() | handle | 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.
Note |
|---|
Assignments in a static class constructor are implicitly locked. |
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
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.




