Freigeben über


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
System_CAPS_protmethod SafeBuffer(Boolean)

Erstellt eine neue Instanz der SafeBuffer -Klasse und gibt an, ob der Pufferhandle zuverlässig freigegeben werden soll.

Eigenschaften

Name Beschreibung
System_CAPS_pubproperty ByteLength

Ruft die Größe des Puffers in Bytes.

System_CAPS_pubproperty IsClosed

Ruft einen Wert ab, der angibt, ob das Handle geschlossen ist.(Geerbt von „SafeHandle“.)

System_CAPS_pubproperty IsInvalid

Ruft einen Wert ab, der angibt, ob das Handle ungültig ist.(Geerbt von „SafeHandleZeroOrMinusOneIsInvalid“.)

Methoden

Name Beschreibung
System_CAPS_pubmethod AcquirePointer(Byte*)

Erhält einen Zeiger aus einem SafeBuffer -Objekt für einen Speicherblock.

System_CAPS_pubmethod Close()

Markiert das Handle für das Freigeben und Verfügbarmachen von Ressourcen.(Geerbt von „SafeHandle“.)

System_CAPS_pubmethod DangerousAddRef(Boolean)

Inkrementiert manuell den Verweiszähler für SafeHandle-Instanzen.(Geerbt von „SafeHandle“.)

System_CAPS_pubmethod DangerousGetHandle()

Gibt den Wert des handle-Felds zurück.(Geerbt von „SafeHandle“.)

System_CAPS_pubmethod DangerousRelease()

Dekrementiert manuell den Verweiszähler für eine SafeHandle-Instanz.(Geerbt von „SafeHandle“.)

System_CAPS_pubmethod Dispose()

Gibt alle von der SafeHandle-Klasse verwendeten Ressourcen frei.(Geerbt von „SafeHandle“.)

System_CAPS_protmethod 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“.)

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.(Geerbt von „SafeHandle“.)

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_pubmethod 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.

System_CAPS_pubmethod Initialize(UInt64)

Definiert die Zuordnungsgröße des Arbeitsspeicherbereichs in Bytes. Sie müssen diese Methode aufrufen, bevor Sie verwenden die SafeBuffer Instanz.

System_CAPS_pubmethod 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.

System_CAPS_protmethod MemberwiseClone()

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

System_CAPS_pubmethod Read<T>(UInt64)

Liest einen Werttyp am angegebenen Offset aus dem Arbeitsspeicher.

System_CAPS_pubmethod 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.

System_CAPS_protmethod ReleaseHandle()

Führt beim Überschreiben in einer abgeleiteten Klasse den Code aus, der für das Freigeben des Handles erforderlich ist.(Geerbt von „SafeHandle“.)

System_CAPS_pubmethod ReleasePointer()

Gibt einen Zeiger, der durch abgerufen wurde die AcquirePointer Methode.

System_CAPS_protmethod SetHandle(IntPtr)

Legt das Handle für das angegebene, bereits vorhandene Handle fest.(Geerbt von „SafeHandle“.)

System_CAPS_pubmethod SetHandleAsInvalid()

Markiert ein Handle als nicht mehr verwendet.(Geerbt von „SafeHandle“.)

System_CAPS_pubmethod ToString()

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

System_CAPS_pubmethod Write<T>(UInt64, T)

Schreibt einen Werttyp an der angegebenen Position in den Arbeitsspeicher.

System_CAPS_pubmethod 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
System_CAPS_protfield 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

SecurityCriticalAttribute

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