SafeBuffer Class
Definition
Warning
This API is now obsolete.
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.
public ref class SafeBuffer abstract : Microsoft::Win32::SafeHandles::SafeHandleZeroOrMinusOneIsInvalid
[System.Security.SecurityCritical]
[System.Obsolete("SafeBuffer may be unavailable in future releases.")]
public abstract class SafeBuffer : Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid
type SafeBuffer = class
inherit SafeHandleZeroOrMinusOneIsInvalid
interface IDisposable
Public MustInherit Class SafeBuffer
Inherits SafeHandleZeroOrMinusOneIsInvalid
- Inheritance
- Derived
- Attributes
- Implements
Remarks
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 method.
Note
Assignments in a static class constructor are implicitly locked.
Constructors
SafeBuffer(Boolean) |
Creates a new instance of the SafeBuffer class, and specifies whether the buffer handle is to be reliably released. |
Fields
handle |
Specifies the handle to be wrapped. (Inherited from SafeHandle) |
Properties
ByteLength |
Gets the size of the buffer, in bytes. |
IsClosed |
Gets a value indicating whether the handle is closed. (Inherited from SafeHandle) |
IsInvalid |
Methods
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) |
GetHashCode() |
Serves as the default hash function. (Inherited from Object) |
GetType() |
Gets the Type of the current instance. (Inherited from Object) |
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() |
Creates a shallow copy of the current Object. (Inherited from Object) |
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(Byte*) 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. |
Security
SecurityCriticalAttribute
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.