Compartilhar via


Classe CriticalHandle

 

Dica

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

Representa uma classe wrapper para os recursos do identificador.

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

Hierarquia de Herança

System.Object
  System.Runtime.ConstrainedExecution.CriticalFinalizerObject
    System.Runtime.InteropServices.CriticalHandle
      Microsoft.Win32.SafeHandles.CriticalHandleMinusOneIsInvalid
      Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid

Sintaxe

[SecurityCriticalAttribute]
[SecurityPermissionAttribute(SecurityAction.InheritanceDemand, 
    UnmanagedCode = true)]
public abstract class CriticalHandle : CriticalFinalizerObject, 
    IDisposable
[SecurityCriticalAttribute]
[SecurityPermissionAttribute(SecurityAction::InheritanceDemand, 
    UnmanagedCode = true)]
public ref class CriticalHandle abstract : CriticalFinalizerObject, 
    IDisposable
[<AbstractClass>]
[<SecurityCriticalAttribute>]
[<SecurityPermissionAttribute(SecurityAction.InheritanceDemand,
    UnmanagedCode = true)>]
type CriticalHandle = 
    class
        inherit CriticalFinalizerObject
        interface IDisposable
    end
<SecurityCriticalAttribute>
<SecurityPermissionAttribute(SecurityAction.InheritanceDemand,
    UnmanagedCode := True)>
Public MustInherit Class CriticalHandle
    Inherits CriticalFinalizerObject
    Implements IDisposable

Construtores

Nome Descrição
System_CAPS_protmethod CriticalHandle(IntPtr)

Inicializa uma nova instância da classe CriticalHandle com o valor do identificador inválido especificado.

Propriedades

Nome Descrição
System_CAPS_pubproperty IsClosed

Obtém um valor que indica se o identificador está fechado.

System_CAPS_pubproperty IsInvalid

Quando substituído em uma classe derivada, obtém um valor que indica se o valor de indicador é válido.

Métodos

Nome Descrição
System_CAPS_pubmethod Close()

Marca o identificador de liberação de recursos.

System_CAPS_pubmethod Dispose()

Libera todos os recursos usados pelo CriticalHandle.

System_CAPS_protmethod Dispose(Boolean)

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

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.(Substitui o CriticalFinalizerObject.Finalize().)

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_protmethod MemberwiseClone()

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

System_CAPS_protmethod ReleaseHandle()

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

System_CAPS_protmethod SetHandle(IntPtr)

Define o identificador para o identificador pré-existente especificado.

System_CAPS_pubmethod SetHandleAsInvalid()

Marca um identificador como inválido.

System_CAPS_pubmethod ToString()

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

Campos

Nome Descrição
System_CAPS_protfield handle

Especifica o identificador a ser encapsulado.

Comentários

O CriticalHandle classe é semelhante do SafeHandle classe, exceto que SafeHandle implementa a contagem de referência. Você pode usar CriticalHandle em vez de SafeHandle para as considerações de desempenho de endereços quando você pode fornecer a sincronização necessária mais eficiente por conta própria.

Porque o CriticalHandle classe não realiza a contagem de referência, ele não fornece proteção contra ataques de segurança de reciclagem de identificador. Porque a referência de algoritmo de contagem implicitamente serializa as operações, uma determinada quantidade de acesso thread-safe também serão perdida. Se você chamar o IDisposable.Dispose ou Close método enquanto uma operação que está usando o identificador está pendente em outro thread, ou se você chamar IDisposable.Dispose ou Close de dois threads ao mesmo tempo, os resultados são não determinísticas. O CriticalHandle classe ainda fornece a finalização crítica garantida fornecida pelo CriticalFinalizerObject classe.

Segurança

InheritanceDemand

for full trust for inheritors. This member cannot be inherited by partially trusted code.

SecurityCriticalAttribute

requires full trust for the immediate caller. This class 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 2.0
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 8.0
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

SafeHandle
Microsoft.Win32.SafeHandles
Namespace System.Runtime.InteropServices

Retornar ao início