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 | |
---|---|---|
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 | |
---|---|---|
ByteLength | Obtém o tamanho do buffer, em bytes. |
|
IsClosed | Obtém um valor que indica se o identificador está fechado.(Herdado de SafeHandle.) |
|
IsInvalid | Obtém um valor que indica se o identificador é inválido.(Herdado de SafeHandleZeroOrMinusOneIsInvalid.) |
Métodos
Nome | Descrição | |
---|---|---|
AcquirePointer(Byte*) | Obtém um ponteiro de um objeto SafeBuffer para um bloco de memória. |
|
Close() | Marca o identificador de liberação de recursos.(Herdado de SafeHandle.) |
|
DangerousAddRef(Boolean) | Incrementa manualmente o contador de referências em instâncias do SafeHandle.(Herdado de SafeHandle.) |
|
DangerousGetHandle() | Retorna o valor do campo handle.(Herdado de SafeHandle.) |
|
DangerousRelease() | Diminui manualmente o contador de referência em uma instância SafeHandle.(Herdado de SafeHandle.) |
|
Dispose() | Libera todos os recursos usados pela classe SafeHandle.(Herdado de SafeHandle.) |
|
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.) |
|
Equals(Object) | Determina se o objeto especificado é igual ao objeto atual.(Herdado de Object.) |
|
Finalize() | Libera todos os recursos associados ao identificador.(Herdado de SafeHandle.) |
|
GetHashCode() | Serve como a função de hash padrão.(Herdado de Object.) |
|
GetType() | ||
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. |
|
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. |
|
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. |
|
MemberwiseClone() | Cria uma cópia superficial do Object atual.(Herdado de Object.) |
|
Read<T>(UInt64) | Lê um tipo de valor na memória no deslocamento especificado. |
|
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. |
|
ReleaseHandle() | Quando substituído em uma classe derivada, executa o código necessário para liberar o identificador.(Herdado de SafeHandle.) |
|
ReleasePointer() | Libera um ponteiro que foi obtido pelo método AcquirePointer. |
|
SetHandle(IntPtr) | Define o identificador para o identificador pré-existente especificado.(Herdado de SafeHandle.) |
|
SetHandleAsInvalid() | Marca um identificador como não mais usado.(Herdado de SafeHandle.) |
|
ToString() | Retorna uma cadeia de caracteres que representa o objeto atual.(Herdado de Object.) |
|
Write<T>(UInt64, T) | Grava um tipo de valor na memória no local determinado. |
|
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 | |
---|---|---|
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
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