Freigeben über


CriticalHandle-Klasse

 

Veröffentlicht: Oktober 2016

Stellt eine Wrapperklasse für Handleressourcen dar.

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

Vererbungshierarchie

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

Syntax

[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

Konstruktoren

Name Beschreibung
System_CAPS_protmethod CriticalHandle(IntPtr)

Initialisiert eine neue Instanz der CriticalHandle-Klasse mit dem angegebenen ungültigen Handlewert.

Eigenschaften

Name Beschreibung
System_CAPS_pubproperty IsClosed

Ruft einen Wert ab, der angibt, ob das Handle geschlossen ist.

System_CAPS_pubproperty IsInvalid

Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob dieses Handle ungültig ist.

Methoden

Name Beschreibung
System_CAPS_pubmethod Close()

Markiert das Handle für das Freigeben und Verfügbarmachen von Ressourcen.

System_CAPS_pubmethod Dispose()

Gibt alle vom CriticalHandle verwendeten Ressourcen frei.

System_CAPS_protmethod Dispose(Boolean)

Gibt die von der CriticalHandle-Klasse verwendeten, nicht verwalteten Ressourcen frei und gibt an, ob ein normaler Freigabevorgang ausgeführt werden soll.

System_CAPS_pubmethod Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_protmethod Finalize()

Gibt alle dem Handle zugeordneten Ressourcen frei.(Überschreibt CriticalFinalizerObject.Finalize().)

System_CAPS_pubmethod GetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethod GetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_protmethod MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.)

System_CAPS_protmethod ReleaseHandle()

Führt beim Überschreiben in einer abgeleiteten Klasse den Code aus, der für das Freigeben des Handles erforderlich ist.

System_CAPS_protmethod SetHandle(IntPtr)

Legt das Handle für das angegebene, bereits vorhandene Handle fest.

System_CAPS_pubmethod SetHandleAsInvalid()

Markiert ein Handle als ungültig.

System_CAPS_pubmethod ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

Felder

Name Beschreibung
System_CAPS_protfield handle

Gibt das zu umschließende Handle an.

Hinweise

The T:System.Runtime.InteropServices.CriticalHandle class is similar to the T:System.Runtime.InteropServices.SafeHandle class, except that T:System.Runtime.InteropServices.SafeHandle implements reference counting. You can use T:System.Runtime.InteropServices.CriticalHandle instead of T:System.Runtime.InteropServices.SafeHandle to address performance considerations when you can provide the necessary synchronization more efficiently yourself.

Because the T:System.Runtime.InteropServices.CriticalHandle class does not perform reference counting, it does not provide protection from handle recycling security attacks. Because the reference counting algorithm implicitly serializes operations, a certain amount of thread safety is also lost. If you call the M:System.IDisposable.Dispose or M:System.Runtime.InteropServices.SafeHandle.Close method while an operation that is using the handle is outstanding on another thread, or if you call M:System.IDisposable.Dispose or M:System.Runtime.InteropServices.SafeHandle.Close from two threads at the same time, the results are non-deterministic. The T:System.Runtime.InteropServices.CriticalHandle class still provides the guaranteed critical finalization provided by the T:System.Runtime.ConstrainedExecution.CriticalFinalizerObject class.

Sicherheit

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.

Versionsinformationen

Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 2.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 8.0
Windows Phone
Verfügbar seit 8.1

Threadsicherheit

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Siehe auch

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

Zurück zum Anfang