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 | |
---|---|---|
CriticalHandle(IntPtr) | Initialisiert eine neue Instanz der CriticalHandle-Klasse mit dem angegebenen ungültigen Handlewert. |
Eigenschaften
Name | Beschreibung | |
---|---|---|
IsClosed | Ruft einen Wert ab, der angibt, ob das Handle geschlossen ist. |
|
IsInvalid | Ruft beim Überschreiben in einer abgeleiteten Klasse einen Wert ab, der angibt, ob dieses Handle ungültig ist. |
Methoden
Name | Beschreibung | |
---|---|---|
Close() | Markiert das Handle für das Freigeben und Verfügbarmachen von Ressourcen. |
|
Dispose() | Gibt alle vom CriticalHandle verwendeten Ressourcen frei. |
|
Dispose(Boolean) | Gibt die von der CriticalHandle-Klasse verwendeten, nicht verwalteten Ressourcen frei und gibt an, ob ein normaler Freigabevorgang ausgeführt werden soll. |
|
Equals(Object) | Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.) |
|
Finalize() | Gibt alle dem Handle zugeordneten Ressourcen frei.(Überschreibt CriticalFinalizerObject.Finalize().) |
|
GetHashCode() | Fungiert als die Standardhashfunktion.(Geerbt von „Object“.) |
|
GetType() | Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.) |
|
MemberwiseClone() | Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.) |
|
ReleaseHandle() | Führt beim Überschreiben in einer abgeleiteten Klasse den Code aus, der für das Freigeben des Handles erforderlich ist. |
|
SetHandle(IntPtr) | Legt das Handle für das angegebene, bereits vorhandene Handle fest. |
|
SetHandleAsInvalid() | Markiert ein Handle als ungültig. |
|
ToString() | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.) |
Felder
Name | Beschreibung | |
---|---|---|
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
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.
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