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 | |
---|---|---|
CriticalHandle(IntPtr) | Inicializa uma nova instância da classe CriticalHandle com o valor do identificador inválido especificado. |
Propriedades
Nome | Descrição | |
---|---|---|
IsClosed | Obtém um valor que indica se o identificador está fechado. |
|
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 | |
---|---|---|
Close() | Marca o identificador de liberação de recursos. |
|
Dispose() | Libera todos os recursos usados pelo CriticalHandle. |
|
Dispose(Boolean) | Libera os recursos não gerenciados usados pela classe CriticalHandle que especifica se deve executar uma operação de descarte normal. |
|
Equals(Object) | Determina se o objeto especificado é igual ao objeto atual.(Herdado de Object.) |
|
Finalize() | Libera todos os recursos associados ao identificador.(Substitui o CriticalFinalizerObject.Finalize().) |
|
GetHashCode() | Serve como a função de hash padrão.(Herdado de Object.) |
|
GetType() | ||
MemberwiseClone() | Cria uma cópia superficial do Object atual.(Herdado de Object.) |
|
ReleaseHandle() | Quando substituído em uma classe derivada, executa o código necessário para liberar o identificador. |
|
SetHandle(IntPtr) | Define o identificador para o identificador pré-existente especificado. |
|
SetHandleAsInvalid() | Marca um identificador como inválido. |
|
ToString() | Retorna uma cadeia de caracteres que representa o objeto atual.(Herdado de Object.) |
Campos
Nome | Descrição | |
---|---|---|
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
for full trust for inheritors. This member cannot be inherited by partially trusted code.
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