Clase SafeBuffer
Publicado: octubre de 2016
Proporciona un búfer de memoria controlado que se puede usar para leer y escribir. Los intentos para acceder a la memoria fuera del búfer controlado (agotamientos y saturaciones) provocan excepciones.
Espacio de nombres: System.Runtime.InteropServices
Ensamblado: mscorlib (en mscorlib.dll)
Jerarquía de herencia
System.Object
System.Runtime.ConstrainedExecution.CriticalFinalizerObject
System.Runtime.InteropServices.SafeHandle
Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid
System.Runtime.InteropServices.SafeBuffer
Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle
Sintaxis
[SecurityCriticalAttribute]
public abstract class SafeBuffer : SafeHandleZeroOrMinusOneIsInvalid
[SecurityCriticalAttribute]
public ref class SafeBuffer abstract : SafeHandleZeroOrMinusOneIsInvalid
[<AbstractClass>]
[<SecurityCriticalAttribute>]
type SafeBuffer =
class
inherit SafeHandleZeroOrMinusOneIsInvalid
end
<SecurityCriticalAttribute>
Public MustInherit Class SafeBuffer
Inherits SafeHandleZeroOrMinusOneIsInvalid
Constructores
Nombre | Descripción | |
---|---|---|
![]() |
SafeBuffer(Boolean) | Crea una nueva instancia de la SafeBuffer clase e indica si el identificador de búfer para liberar de forma confiable. |
Propiedades
Nombre | Descripción | |
---|---|---|
![]() |
ByteLength | Obtiene el tamaño del búfer, en bytes. |
![]() |
IsClosed | Obtiene un valor que indica si el identificador está cerrado.(Heredado de SafeHandle). |
![]() |
IsInvalid | Obtiene un valor que indica si el identificador no es válido.(Heredado de SafeHandleZeroOrMinusOneIsInvalid). |
Métodos
Nombre | Descripción | |
---|---|---|
![]() |
AcquirePointer(Byte*) | Obtiene un puntero de un SafeBuffer objeto para un bloque de memoria. |
![]() |
Close() | Marca el identificador para soltar y liberar recursos.(Heredado de SafeHandle). |
![]() |
DangerousAddRef(Boolean) | Incrementa manualmente el contador de referencia de las instancias SafeHandle.(Heredado de SafeHandle). |
![]() |
DangerousGetHandle() | Devuelve el valor del campo handle.(Heredado de SafeHandle). |
![]() |
DangerousRelease() | Disminuye manualmente el contador de referencia de la instancia SafeHandle.(Heredado de SafeHandle). |
![]() |
Dispose() | Libera todos los recursos que usa la clase SafeHandle.(Heredado de SafeHandle). |
![]() |
Dispose(Boolean) | Libera los recursos no administrados usados por la clase SafeHandle especificando si se lleva a cabo una operación de eliminación normal.(Heredado de SafeHandle). |
![]() |
Equals(Object) | Determina si el objeto especificado es igual al objeto actual.(Heredado de Object). |
![]() |
Finalize() | Libera todos los recursos asociados al identificador.(Heredado de SafeHandle). |
![]() |
GetHashCode() | Sirve como la función hash predeterminada.(Heredado de Object). |
![]() |
GetType() | Obtiene el Type de la instancia actual.(Heredado de Object). |
![]() |
Initialize(UInt32, UInt32) | Especifica el tamaño de asignación de búfer de memoria utilizando el número especificado de elementos y tamaño del elemento. Debe llamar a este método antes de utilizar el SafeBuffer instancia. |
![]() |
Initialize(UInt64) | Define el tamaño de asignación de la región de memoria en bytes. Debe llamar a este método antes de utilizar el SafeBuffer instancia. |
![]() |
Initialize<T>(UInt32) | Define el tamaño de asignación de la región de memoria especificando el número de tipos de valor. Debe llamar a este método antes de utilizar el SafeBuffer instancia. |
![]() |
MemberwiseClone() | Crea una copia superficial del Object actual.(Heredado de Object). |
![]() |
Read<T>(UInt64) | Lee un tipo de valor de la memoria en el desplazamiento especificado. |
![]() |
ReadArray<T>(UInt64, T[], Int32, Int32) | Lee el número especificado de tipos de valor de la memoria, comenzando en el desplazamiento y los escribe en una matriz empezando por el índice. |
![]() |
ReleaseHandle() | Cuando se invalida en una clase derivada, ejecuta el código necesario para liberar el identificador.(Heredado de SafeHandle). |
![]() |
ReleasePointer() | Libera un puntero obtenido por el AcquirePointer (método). |
![]() |
SetHandle(IntPtr) | Establece el identificador en el identificador preexistente.(Heredado de SafeHandle). |
![]() |
SetHandleAsInvalid() | Marca un identificador para indicar que ya no se utiliza.(Heredado de SafeHandle). |
![]() |
ToString() | Devuelve una cadena que representa el objeto actual.(Heredado de Object). |
![]() |
Write<T>(UInt64, T) | Escribe un tipo de valor en la memoria en la ubicación especificada. |
![]() |
WriteArray<T>(UInt64, T[], Int32, Int32) | Escribe el número especificado de tipos de valor en una ubicación de memoria leyendo bytes a partir de la ubicación especificada en la matriz de entrada. |
Campos
Nombre | Descripción | |
---|---|---|
![]() |
handle | Especifica el identificador que se va a ajustar.(Heredado de SafeHandle). |
Comentarios
Debe llamar a la SafeBuffer.Initialize método antes de usar cualquier instancia de SafeBuffer. Para evitar carreras cuando almacene una instancia de un SafeBuffer de objeto en una variable estática, debe utilizar uno de los métodos siguientes:
Crear un bloqueo al publicar el SafeBuffer.
Crear una inicialización de variable local el SafeBuffery, a continuación, asigne el SafeBuffer a la variable estática, por ejemplo, mediante el Interlocked.CompareExchange<T> método.
Nota
Implícitamente se bloquean las asignaciones en un constructor de clases estáticas.
Seguridad
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
Información de versión
Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 4.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Windows Phone
Disponible desde 8.1
Seguridad para subprocesos
Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.
Ver también
Espacio de nombres System.Runtime.InteropServices
Volver al principio