Compartilhar via


Classe SafeBuffer

 

Dica

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Fornece um buffer de memória controlado que pode ser usado para leitura e gravação. Tentativas de acessar a memória fora do buffer controlado (falhas e estouros) geram exceções.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (em mscorlib.dll)

Hierarquia de Herança

System.Object
  System.Runtime.ConstrainedExecution.CriticalFinalizerObject
    System.Runtime.InteropServices.SafeHandle
      Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid
        System.Runtime.InteropServices.SafeBuffer
          Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle

Sintaxe

[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

Construtores

Nome Descrição
System_CAPS_protmethod SafeBuffer(Boolean)

Cria uma nova instância da classe SafeBuffer e especifica se o identificador do buffer deve ser liberado com confiança.

Propriedades

Nome Descrição
System_CAPS_pubproperty ByteLength

Obtém o tamanho do buffer, em bytes.

System_CAPS_pubproperty IsClosed

Obtém um valor que indica se o identificador está fechado.(Herdado de SafeHandle.)

System_CAPS_pubproperty IsInvalid

Obtém um valor que indica se o identificador é inválido.(Herdado de SafeHandleZeroOrMinusOneIsInvalid.)

Métodos

Nome Descrição
System_CAPS_pubmethod AcquirePointer(Byte*)

Obtém um ponteiro de um objeto SafeBuffer para um bloco de memória.

System_CAPS_pubmethod Close()

Marca o identificador de liberação de recursos.(Herdado de SafeHandle.)

System_CAPS_pubmethod DangerousAddRef(Boolean)

Incrementa manualmente o contador de referências em instâncias do SafeHandle.(Herdado de SafeHandle.)

System_CAPS_pubmethod DangerousGetHandle()

Retorna o valor do campo handle.(Herdado de SafeHandle.)

System_CAPS_pubmethod DangerousRelease()

Diminui manualmente o contador de referência em uma instância SafeHandle.(Herdado de SafeHandle.)

System_CAPS_pubmethod Dispose()

Libera todos os recursos usados pela classe SafeHandle.(Herdado de SafeHandle.)

System_CAPS_protmethod Dispose(Boolean)

Libera os recursos não gerenciados usados pela classe SafeHandle que especifica se deve executar uma operação de descarte normal.(Herdado de SafeHandle.)

System_CAPS_pubmethod Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.(Herdado de Object.)

System_CAPS_protmethod Finalize()

Libera todos os recursos associados ao identificador.(Herdado de SafeHandle.)

System_CAPS_pubmethod GetHashCode()

Serve como a função de hash padrão.(Herdado de Object.)

System_CAPS_pubmethod GetType()

Obtém o Type da instância atual.(Herdado de Object.)

System_CAPS_pubmethod Initialize(UInt32, UInt32)

Especifica o tamanho de alocação do buffer de memória usando o número especificado de elementos e o tamanho do elemento. É necessário chamar esse método antes de usar a instância SafeBuffer.

System_CAPS_pubmethod Initialize(UInt64)

Define o tamanho de alocação da região de memória em bytes. É necessário chamar esse método antes de usar a instância SafeBuffer.

System_CAPS_pubmethod Initialize<T>(UInt32)

Define o tamanho de alocação da região de memória especificando o número dos tipos de valor. É necessário chamar esse método antes de usar a instância SafeBuffer.

System_CAPS_protmethod MemberwiseClone()

Cria uma cópia superficial do Object atual.(Herdado de Object.)

System_CAPS_pubmethod Read<T>(UInt64)

Lê um tipo de valor na memória no deslocamento especificado.

System_CAPS_pubmethod ReadArray<T>(UInt64, T[], Int32, Int32)

Lê o número de tipos de valor especificado do início da memória no deslocamento e os grava no início de uma matriz no índice.

System_CAPS_protmethod ReleaseHandle()

Quando substituído em uma classe derivada, executa o código necessário para liberar o identificador.(Herdado de SafeHandle.)

System_CAPS_pubmethod ReleasePointer()

Libera um ponteiro que foi obtido pelo método AcquirePointer.

System_CAPS_protmethod SetHandle(IntPtr)

Define o identificador para o identificador pré-existente especificado.(Herdado de SafeHandle.)

System_CAPS_pubmethod SetHandleAsInvalid()

Marca um identificador como não mais usado.(Herdado de SafeHandle.)

System_CAPS_pubmethod ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.(Herdado de Object.)

System_CAPS_pubmethod Write<T>(UInt64, T)

Grava um tipo de valor na memória no local determinado.

System_CAPS_pubmethod WriteArray<T>(UInt64, T[], Int32, Int32)

Grava o número de tipos de valor especificado em um local de memória lendo bytes começando do local especificado na matriz de entrada.

Campos

Nome Descrição
System_CAPS_protfield handle

Especifica o identificador a ser encapsulado.(Herdado de SafeHandle.)

Comentários

Você deve chamar o SafeBuffer.Initialize método antes de usar qualquer instância do SafeBuffer. Para evitar corridas quando você armazena uma instância de um SafeBuffer do objeto em uma variável estática, você deve usar uma das seguintes abordagens:

  • Criar um bloqueio ao publicar o SafeBuffer.

  • Criar um local inicializar variável, o SafeBuffere, em seguida, atribua o SafeBuffer à variável estática, por exemplo, usando o Interlocked.CompareExchange<T> método.

Dica

Atribuições em um construtor de classe estática implicitamente estão bloqueadas.

Segurança

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Informações de Versão

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 4.0
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Windows Phone
Disponível desde 8.1

Acesso thread-safe

Quaisquer membros estáticos públicos ( Compartilhado no Visual Basic) desse tipo são thread-safe. Não há garantia de que qualquer membro de instância seja thread-safe.

Confira Também

Namespace System.Runtime.InteropServices

Retornar ao início