Early Preview

This is currently very much a preview. Please feel free to try things out, but don't be upset if anything is not yet working. Feedback is welcome over on our GitHub Dicussions page.

class System.​Runtime.​InteropServices.​SafeBuffer

Assembly: System.Runtime

Inheritance: object → ConstrainedExecution.CriticalFinalizerObjectSafeHandleMicrosoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid → SafeBuffer

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.

Fields and Constants

protected nint
handle
Specifies the handle to be wrapped.

Properties

public ulong
ByteLength
Gets the size of the buffer, in bytes.
public bool
IsInvalid
Gets a value that indicates whether the handle is invalid.
public bool
IsClosed
Gets a value indicating whether the handle is closed.

Methods

public void
AcquirePointer​(Byte*& pointer)
public void
Initialize​(uint numElements, uint sizeOfEachElement)
numElements The number of elements in the buffer.
sizeOfEachElement The size of each element in the buffer.
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 <see cref="T:System.Runtime.InteropServices.SafeBuffer" /> instance.
public void
Initialize​(ulong numBytes)
numBytes The number of bytes in the buffer.
Defines the allocation size of the memory region in bytes. You must call this method before you use the <see cref="T:System.Runtime.InteropServices.SafeBuffer" /> instance.
public void
Initialize​(uint numElements)
public void
ReadArray​(ulong byteOffset, T[] array, int index, int count)
public void
ReadSpan​(ulong byteOffset, Span`1 buffer)
public T
Read​(ulong byteOffset)
public void
ReleasePointer​()
Releases a pointer that was obtained by the <see cref="M:System.Runtime.InteropServices.SafeBuffer.AcquirePointer(System.Byte*@)" /> method.
public void
WriteArray​(ulong byteOffset, T[] array, int index, int count)
public void
WriteSpan​(ulong byteOffset, ReadOnlySpan`1 data)
public void
Write​(ulong byteOffset, T value)
public void
Close​()
Inherited from SafeHandle
Marks the handle for releasing and freeing resources.
public void
DangerousAddRef​(Boolean& success)
Inherited from SafeHandle
public nint
DangerousGetHandle​()
Inherited from SafeHandle
Returns An <see cref="T:System.IntPtr" /> representing the value of the <see cref="F:System.Runtime.InteropServices.SafeHandle.handle" /> field. If the handle has been marked invalid with <see cref="M:System.Runtime.InteropServices.SafeHandle.SetHandleAsInvalid" /> , this method still returns the original handle value, which can be a stale value.
Returns the value of the <see cref="F:System.Runtime.InteropServices.SafeHandle.handle" /> field.
public void
DangerousRelease​()
Inherited from SafeHandle
Manually decrements the reference counter on a <see cref="T:System.Runtime.InteropServices.SafeHandle" /> instance.
public void
Dispose​()
Inherited from SafeHandle
Releases all resources used by the <see cref="T:System.Runtime.InteropServices.SafeHandle" /> class.
protected void
Dispose​(bool disposing)
Inherited from SafeHandle
disposing <see langword="true" /> for a normal dispose operation; <see langword="false" /> to finalize the handle.
Releases the unmanaged resources used by the <see cref="T:System.Runtime.InteropServices.SafeHandle" /> class specifying whether to perform a normal dispose operation.
protected void
Finalize​()
Inherited from SafeHandle
Frees all resources associated with the handle.
protected bool
ReleaseHandle​()
Inherited from SafeHandle
Returns <see langword="true" /> if the handle is released successfully; otherwise, in the event of a catastrophic failure, <see langword="false" /> . In this case, it generates a releaseHandleFailed Managed Debugging Assistant.
When overridden in a derived class, executes the code required to free the handle.
protected void
SetHandle​(nint handle)
Inherited from SafeHandle
handle The pre-existing handle to use.
Sets the handle to the specified pre-existing handle.
public void
SetHandleAsInvalid​()
Inherited from SafeHandle
Marks a handle as no longer used.
public bool
Equals​(object obj)
Inherited from object
obj The object to compare with the current object.
Returns <see langword="true" /> if the specified object is equal to the current object; otherwise, <see langword="false" /> .
Determines whether the specified object is equal to the current object.
public int
GetHashCode​()
Inherited from object
Returns A hash code for the current object.
Serves as the default hash function.
public Type
GetType​()
Inherited from object
Returns The exact runtime type of the current instance.
Gets the <see cref="T:System.Type" /> of the current instance.
protected object
MemberwiseClone​()
Inherited from object
Returns A shallow copy of the current <see cref="T:System.Object" /> .
Creates a shallow copy of the current <see cref="T:System.Object" /> .
public string
ToString​()
Inherited from object
Returns A string that represents the current object.
Returns a string that represents the current object.