Compartir a través de


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
System_CAPS_protmethod 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
System_CAPS_pubproperty ByteLength

Obtiene el tamaño del búfer, en bytes.

System_CAPS_pubproperty IsClosed

Obtiene un valor que indica si el identificador está cerrado.(Heredado de SafeHandle).

System_CAPS_pubproperty IsInvalid

Obtiene un valor que indica si el identificador no es válido.(Heredado de SafeHandleZeroOrMinusOneIsInvalid).

Métodos

Nombre Descripción
System_CAPS_pubmethod AcquirePointer(Byte*)

Obtiene un puntero de un SafeBuffer objeto para un bloque de memoria.

System_CAPS_pubmethod Close()

Marca el identificador para soltar y liberar recursos.(Heredado de SafeHandle).

System_CAPS_pubmethod DangerousAddRef(Boolean)

Incrementa manualmente el contador de referencia de las instancias SafeHandle.(Heredado de SafeHandle).

System_CAPS_pubmethod DangerousGetHandle()

Devuelve el valor del campo handle.(Heredado de SafeHandle).

System_CAPS_pubmethod DangerousRelease()

Disminuye manualmente el contador de referencia de la instancia SafeHandle.(Heredado de SafeHandle).

System_CAPS_pubmethod Dispose()

Libera todos los recursos que usa la clase SafeHandle.(Heredado de SafeHandle).

System_CAPS_protmethod 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).

System_CAPS_pubmethod Equals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_protmethod Finalize()

Libera todos los recursos asociados al identificador.(Heredado de SafeHandle).

System_CAPS_pubmethod GetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethod GetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethod 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.

System_CAPS_pubmethod 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.

System_CAPS_pubmethod 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.

System_CAPS_protmethod MemberwiseClone()

Crea una copia superficial del Object actual.(Heredado de Object).

System_CAPS_pubmethod Read<T>(UInt64)

Lee un tipo de valor de la memoria en el desplazamiento especificado.

System_CAPS_pubmethod 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.

System_CAPS_protmethod ReleaseHandle()

Cuando se invalida en una clase derivada, ejecuta el código necesario para liberar el identificador.(Heredado de SafeHandle).

System_CAPS_pubmethod ReleasePointer()

Libera un puntero obtenido por el AcquirePointer (método).

System_CAPS_protmethod SetHandle(IntPtr)

Establece el identificador en el identificador preexistente.(Heredado de SafeHandle).

System_CAPS_pubmethod SetHandleAsInvalid()

Marca un identificador para indicar que ya no se utiliza.(Heredado de SafeHandle).

System_CAPS_pubmethod ToString()

Devuelve una cadena que representa el objeto actual.(Heredado de Object).

System_CAPS_pubmethod Write<T>(UInt64, T)

Escribe un tipo de valor en la memoria en la ubicación especificada.

System_CAPS_pubmethod 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
System_CAPS_protfield 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

SecurityCriticalAttribute

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