SafeBuffer-Klasse
Veröffentlicht: Oktober 2016
Stellt einen gesteuerten Arbeitsspeicherpuffer bereit, der zum Lesen und Schreiben verwendet werden kann. Arbeitsspeicherzugriffe außerhalb des gesteuerten Puffers (Unterläufe und Überläufe) führen jeweils zu einer Ausnahme.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Vererbungshierarchie
System.Object
System.Runtime.ConstrainedExecution.CriticalFinalizerObject
System.Runtime.InteropServices.SafeHandle
Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid
System.Runtime.InteropServices.SafeBuffer
Microsoft.Win32.SafeHandles.SafeMemoryMappedViewHandle
Syntax
[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
Konstruktoren
Name | Beschreibung | |
---|---|---|
SafeBuffer(Boolean) | Erstellt eine neue Instanz der SafeBuffer -Klasse und gibt an, ob der Pufferhandle zuverlässig freigegeben werden soll. |
Eigenschaften
Name | Beschreibung | |
---|---|---|
ByteLength | Ruft die Größe des Puffers in Bytes. |
|
IsClosed | Ruft einen Wert ab, der angibt, ob das Handle geschlossen ist.(Geerbt von „SafeHandle“.) |
|
IsInvalid | Ruft einen Wert ab, der angibt, ob das Handle ungültig ist.(Geerbt von „SafeHandleZeroOrMinusOneIsInvalid“.) |
Methoden
Name | Beschreibung | |
---|---|---|
AcquirePointer(Byte*) | Erhält einen Zeiger aus einem SafeBuffer -Objekt für einen Speicherblock. |
|
Close() | Markiert das Handle für das Freigeben und Verfügbarmachen von Ressourcen.(Geerbt von „SafeHandle“.) |
|
DangerousAddRef(Boolean) | Inkrementiert manuell den Verweiszähler für SafeHandle-Instanzen.(Geerbt von „SafeHandle“.) |
|
DangerousGetHandle() | Gibt den Wert des handle-Felds zurück.(Geerbt von „SafeHandle“.) |
|
DangerousRelease() | Dekrementiert manuell den Verweiszähler für eine SafeHandle-Instanz.(Geerbt von „SafeHandle“.) |
|
Dispose() | Gibt alle von der SafeHandle-Klasse verwendeten Ressourcen frei.(Geerbt von „SafeHandle“.) |
|
Dispose(Boolean) | Gibt die von der SafeHandle-Klasse verwendeten, nicht verwalteten Ressourcen frei und gibt an, ob ein normaler Freigabevorgang ausgeführt werden soll.(Geerbt von „SafeHandle“.) |
|
Equals(Object) | Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.) |
|
Finalize() | Gibt alle dem Handle zugeordneten Ressourcen frei.(Geerbt von „SafeHandle“.) |
|
GetHashCode() | Fungiert als die Standardhashfunktion.(Geerbt von „Object“.) |
|
GetType() | Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.) |
|
Initialize(UInt32, UInt32) | Gibt die Zuordnungsgröße des Arbeitsspeicherpuffers mit die angegebene Anzahl von Elementen und der Elementgröße an. Sie müssen diese Methode aufrufen, bevor Sie verwenden die SafeBuffer Instanz. |
|
Initialize(UInt64) | Definiert die Zuordnungsgröße des Arbeitsspeicherbereichs in Bytes. Sie müssen diese Methode aufrufen, bevor Sie verwenden die SafeBuffer Instanz. |
|
Initialize<T>(UInt32) | Definiert die Zuordnungsgröße des Arbeitsspeicherbereichs durch Angabe der Anzahl von Werttypen. Sie müssen diese Methode aufrufen, bevor Sie verwenden die SafeBuffer Instanz. |
|
MemberwiseClone() | Erstellt eine flache Kopie des aktuellen Object.(Geerbt von „Object“.) |
|
Read<T>(UInt64) | Liest einen Werttyp am angegebenen Offset aus dem Arbeitsspeicher. |
|
ReadArray<T>(UInt64, T[], Int32, Int32) | Die angegebene Anzahl von Werttypen aus dem Speicher ab dem Offset liest und schreibt sie in ein Array, beginnend am Index. |
|
ReleaseHandle() | Führt beim Überschreiben in einer abgeleiteten Klasse den Code aus, der für das Freigeben des Handles erforderlich ist.(Geerbt von „SafeHandle“.) |
|
ReleasePointer() | Gibt einen Zeiger, der durch abgerufen wurde die AcquirePointer Methode. |
|
SetHandle(IntPtr) | Legt das Handle für das angegebene, bereits vorhandene Handle fest.(Geerbt von „SafeHandle“.) |
|
SetHandleAsInvalid() | Markiert ein Handle als nicht mehr verwendet.(Geerbt von „SafeHandle“.) |
|
ToString() | Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.) |
|
Write<T>(UInt64, T) | Schreibt einen Werttyp an der angegebenen Position in den Arbeitsspeicher. |
|
WriteArray<T>(UInt64, T[], Int32, Int32) | Schreibt die angegebene Anzahl von Werttypen auf einen Speicherbereich durch Lesen von Bytes beginnend mit der angegebenen Position im Eingabearray. |
Felder
Name | Beschreibung | |
---|---|---|
handle | Gibt das zu umschließende Handle an.(Geerbt von „SafeHandle“.) |
Hinweise
Rufen Sie die SafeBuffer.Initialize Methode vor der Verwendung einer beliebigen Instanz von SafeBuffer. Wettläufe zu vermeiden, wenn Sie eine Instanz von Speichern einer SafeBuffer Objekt in einer statischen Variablen, sollten Sie eine der folgenden Ansätze verwenden:
Erstellen Sie eine Sperre, bei der Veröffentlichung der SafeBuffer.
Erstellen Sie eine lokale Variable, die Initialisierung der SafeBuffer, und weisen Sie ihm die SafeBuffer auf die statische Variable, z. B. durch die Verwendung der Interlocked.CompareExchange<T> Methode.
Hinweis
Zuweisungen in einen statischen Klassenkonstruktor sind implizit gesperrt.
Sicherheit
requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.
Versionsinformationen
Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 4.0
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
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
System.Runtime.InteropServices-Namespace
Zurück zum Anfang