Marshal-Klasse
Veröffentlicht: Oktober 2016
Bietet eine Auflistung von Methoden zum Belegen von nicht verwaltetem Speicher, zum Kopieren von nicht verwalteten Speicherblöcken und zum Konvertieren von verwalteten in nicht verwaltete Typen sowie sonstige Methoden, die bei der Interaktion mit nicht verwaltetem Code verwendet werden.
Namespace: System.Runtime.InteropServices
Assembly: mscorlib (in mscorlib.dll)
Vererbungshierarchie
System.Object
System.Runtime.InteropServices.Marshal
Syntax
public static class Marshal
public ref class Marshal abstract sealed
[<AbstractClass>]
[<Sealed>]
type Marshal = class end
Public NotInheritable Class Marshal
Methoden
Name | Beschreibung | |
---|---|---|
![]() ![]() |
AddRef(IntPtr) | Inkrementiert den Verweiszähler für die angegebene Schnittstelle. |
![]() ![]() |
AllocCoTaskMem(Int32) | Belegt einen Speicherblock der angegebenen Größe aus der Speicherbelegungsfunktion für COM-Aufgaben. |
![]() ![]() |
AllocHGlobal(Int32) | Reserviert Speicher aus dem nicht verwalteten Arbeitsspeicher des Prozesses mit der angegebenen Anzahl von Bytes. |
![]() ![]() |
AllocHGlobal(IntPtr) | Reserviert Speicher aus dem nicht verwalteten Arbeitsspeicher des Prozesses mithilfe des Zeigers auf die angegebene Anzahl von Bytes. |
![]() ![]() |
AreComObjectsAvailableForCleanup() | Gibt an, ob Runtime Callable Wrappers (RCWs) aus einem beliebigen Kontext zur Bereinigung verfügbar sind. |
![]() ![]() |
BindToMoniker(String) | Ruft einen vom angegebenen Moniker bezeichneten Schnittstellenzeiger ab. |
![]() ![]() |
ChangeWrapperHandleStrength(Object, Boolean) | Ändert die Stärke des CCW-Handles (COM Callable Wrapper) für ein Objekt. |
![]() ![]() |
CleanupUnusedObjectsInCurrentContext() | Benachrichtigt die Laufzeit, dass alle im aktuellen Kontext reservierten Runtime Callable Wrapper (RCWs) bereinigt werden sollen. |
![]() ![]() |
Copy(Byte[], Int32, IntPtr, Int32) | Kopiert Daten aus einem eindimensionalen, verwalteten Array von 8-Bit-Ganzzahlen ohne Vorzeichen in einen nicht verwalteten Speicherzeiger. |
![]() ![]() |
Copy(Char[], Int32, IntPtr, Int32) | Kopiert Daten aus einem eindimensionalen, verwalteten Zeichenarray in einen nicht verwalteten Speicherzeiger. |
![]() ![]() |
Copy(Double[], Int32, IntPtr, Int32) | Kopiert Daten aus einem eindimensionalen, verwalteten Array von Gleitkommazahlen mit doppelter Genauigkeit in einen nicht verwalteten Speicherzeiger. |
![]() ![]() |
Copy(Int16[], Int32, IntPtr, Int32) | Kopiert Daten aus einem eindimensionalen, verwalteten Array von 16-Bit-Ganzzahlen mit Vorzeichen in einen nicht verwalteten Speicherzeiger. |
![]() ![]() |
Copy(Int32[], Int32, IntPtr, Int32) | Kopiert Daten aus einem eindimensionalen, verwalteten Array von 32-Bit-Ganzzahlen mit Vorzeichen in einen nicht verwalteten Speicherzeiger. |
![]() ![]() |
Copy(Int64[], Int32, IntPtr, Int32) | Kopiert Daten aus einem eindimensionalen, verwalteten Array von 64-Bit-Ganzzahlen mit Vorzeichen in einen nicht verwalteten Speicherzeiger. |
![]() ![]() |
Copy(IntPtr, Byte[], Int32, Int32) | Kopiert Daten aus einem nicht verwalteten Speicherzeiger in ein verwaltetes Array von 8-Bit-Ganzzahlen ohne Vorzeichen. |
![]() ![]() |
Copy(IntPtr, Char[], Int32, Int32) | Kopiert Daten aus einem nicht verwalteten Speicherzeiger in ein verwaltetes Zeichenarray. |
![]() ![]() |
Copy(IntPtr, Double[], Int32, Int32) | Kopiert Daten aus einem nicht verwalteten Speicherzeiger in ein verwaltetes Array von Gleitkommazahlen mit doppelter Genauigkeit. |
![]() ![]() |
Copy(IntPtr, Int16[], Int32, Int32) | Kopiert Daten aus einem nicht verwalteten Speicherzeiger in ein verwaltetes Array von 16-Bit-Ganzzahlen mit Vorzeichen. |
![]() ![]() |
Copy(IntPtr, Int32[], Int32, Int32) | Kopiert Daten aus einem nicht verwalteten Speicherzeiger in ein verwaltetes Array von 32-Bit-Ganzzahlen mit Vorzeichen. |
![]() ![]() |
Copy(IntPtr, Int64[], Int32, Int32) | Kopiert Daten aus einem nicht verwalteten Speicherzeiger in ein verwaltetes Array von 64-Bit-Ganzzahlen mit Vorzeichen. |
![]() ![]() |
Copy(IntPtr, IntPtr[], Int32, Int32) | Kopiert Daten aus einem nicht verwalteten Speicherzeiger in ein verwaltetes IntPtr-Array. |
![]() ![]() |
Copy(IntPtr, Single[], Int32, Int32) | Kopiert Daten aus einem nicht verwalteten Speicherzeiger in ein verwaltetes Array von Gleitkommazahlen mit einfacher Genauigkeit. |
![]() ![]() |
Copy(IntPtr[], Int32, IntPtr, Int32) | Kopiert Daten aus einem eindimensionalen, verwalteten IntPtr-Array in einen nicht verwalteten Speicherzeiger. |
![]() ![]() |
Copy(Single[], Int32, IntPtr, Int32) | Kopiert Daten aus einem eindimensionalen, verwalteten Array von Gleitkommazahlen mit einfacher Genauigkeit in einen nicht verwalteten Speicherzeiger. |
![]() ![]() |
CreateAggregatedObject(IntPtr, Object) | Verbindet ein verwaltetes Objekt mit dem angegebenen COM-Objekt. |
![]() ![]() |
CreateAggregatedObject<T>(IntPtr, T) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Aggregiert ein verwaltetes Objekt des angegebenen Typs mit dem angegebenen COM-Objekt. |
![]() ![]() |
CreateWrapperOfType(Object, Type) | Umschließt das angegebene COM-Objekt mit einem Objekt des angegebenen Typs. |
![]() ![]() |
CreateWrapperOfType<T, TWrapper>(T) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Umschließt das angegebene COM-Objekt mit einem Objekt des angegebenen Typs. |
![]() ![]() |
DestroyStructure(IntPtr, Type) | Gibt alle Unterstrukturen frei, auf die der angegebene nicht verwaltete Speicherblock zeigt. |
![]() ![]() |
DestroyStructure<T>(IntPtr) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Gibt alle Unterstrukturen eines angegebenen Typs frei, auf die der angegebene nicht verwaltete Speicherblock zeigt. |
![]() ![]() |
FinalReleaseComObject(Object) | Gibt alle Verweise auf einen Runtime Callable Wrapper (RCW) durch Festlegen des Verweiszählers auf 0 frei. |
![]() ![]() |
FreeBSTR(IntPtr) | Frei eine BSTR mithilfe der COM SysFreeString Funktion. |
![]() ![]() |
FreeCoTaskMem(IntPtr) | Gibt einen Speicherblock frei, der von der nicht verwalteten Speicherbelegungsfunktion für COM-Aufgaben belegt wurde. |
![]() ![]() |
FreeHGlobal(IntPtr) | Gibt Speicherplatz frei, der zuvor aus dem nicht verwalteten Speicher des Prozesses belegt wurde. |
![]() ![]() |
GenerateGuidForType(Type) | Gibt die GUID (Globally Unique Identifier, globaler eindeutiger Bezeichner) für den angegebenen Typ zurück oder generiert eine GUID mithilfe des vom Type Library Exporter-Tool (TlbExp.exe) verwendeten Algorithmus. |
![]() ![]() |
GenerateProgIdForType(Type) | Gibt eine ProgID (Programmbezeichner) für den angegebenen Typ zurück. |
![]() ![]() |
GetActiveObject(String) | Ruft eine ausgeführte Instanz des angegebenen Objekts aus der ROT (Running Object Table) ab. |
![]() ![]() |
GetComInterfaceForObject(Object, Type) | Gibt einen Zeiger auf eine IUnknown -Schnittstelle, die die angegebene Schnittstelle für das angegebene Objekt darstellt. Der benutzerdefinierte Zugriff auf Abfrageschnittstellen ist standardmäßig aktiviert. |
![]() ![]() |
GetComInterfaceForObject(Object, Type, CustomQueryInterfaceMode) | Gibt einen Zeiger auf eine IUnknown -Schnittstelle, die die angegebene Schnittstelle für das angegebene Objekt darstellt. Der benutzerdefinierte Zugriff auf die Abfrageschnittstelle wird vom angegebenen Anpassungsmodus gesteuert. |
![]() ![]() |
GetComInterfaceForObject<T, TInterface>(T) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Gibt einen Zeiger auf eine IUnknown Schnittstelle, die die angegebene Schnittstelle für ein Objekt des angegebenen Typs darstellt. Der benutzerdefinierte Zugriff auf Abfrageschnittstellen ist standardmäßig aktiviert. |
![]() ![]() |
GetComInterfaceForObjectInContext(Object, Type) | Gibt einen Schnittstellenzeiger zurück, der die angegebene Schnittstelle für ein Objekt zurückgibt, wenn sich der Aufrufer in demselben Kontext wie das betreffende Objekt befindet. |
![]() ![]() |
GetComObjectData(Object, Object) | Ruft Daten ab, auf die durch den angegebenen Schlüssel im angegebenen COM-Objekt verwiesen wird. |
![]() ![]() |
GetComSlotForMethodInfo(MemberInfo) | Ruft den VTBL-Slot (virtuelle Funktionstabelle, Vtable) für einen angegebenen System.Reflection.MemberInfo-Typ ab, wenn dieser Typ für COM verfügbar gemacht wird. |
![]() ![]() |
GetDelegateForFunctionPointer(IntPtr, Type) | Konvertiert einen nicht verwalteten Funktionszeiger in einen Delegaten. |
![]() ![]() |
GetDelegateForFunctionPointer<TDelegate>(IntPtr) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Konvertiert einen nicht verwalteten Funktionszeiger in einen Delegaten eines angegebenen Typs. |
![]() ![]() |
GetEndComSlot(Type) | Ruft den letzten Slot in der virtuellen Funktionstabelle (Vtable oder VTBL) eines Typs ab, wenn dieser für COM verfügbar gemacht wird. |
![]() ![]() |
GetExceptionCode() | Ruft einen Code ab, der den Typ der aufgetretenen Ausnahme bezeichnet. |
![]() ![]() |
GetExceptionForHR(Int32) | Konvertiert den angegebenen HRESULT-Fehlercode in ein entsprechendes Exception-Objekt. |
![]() ![]() |
GetExceptionForHR(Int32, IntPtr) | Konvertiert den angegebenen HRESULT-Fehlercode in ein entsprechendes Exception-Objekt, wobei zusätzliche Fehlerinformationen in eine IErrorInfo-Schnittstelle für das Ausnahmeobjekt übergeben werden. |
![]() ![]() |
GetExceptionPointers() | Ruft eine computerunabhängige Beschreibung einer Ausnahme und Informationen zu dem Zustand ab, der beim Auftreten der Ausnahme für den Thread vorlag. |
![]() ![]() |
GetFunctionPointerForDelegate(Delegate) | Konvertiert einen Delegaten in einen Funktionszeiger, der aus nicht verwaltetem Code aufgerufen werden kann. |
![]() ![]() |
GetFunctionPointerForDelegate<TDelegate>(TDelegate) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Konvertiert einen Delegaten eines angegebenen Typs in einen Funktionszeiger, der aus nicht verwaltetem Code aufgerufen werden kann. |
![]() ![]() |
GetHINSTANCE(Module) | Gibt das Instanzhandle (HINSTANCE) für das angegebene Modul zurück. |
![]() ![]() |
GetHRForException(Exception) | Konvertiert die angegebene Ausnahme in ein HRESULT. |
![]() ![]() |
GetHRForLastWin32Error() | Gibt das HRESULT für den letzten Fehler zurück, der durch einen mit Marshal ausgeführten Win32-Code ausgelöst wurde. |
![]() ![]() |
GetIDispatchForObject(Object) | Gibt eine IDispatch-Schnittstelle aus einem verwalteten Objekt zurück. |
![]() ![]() |
GetIDispatchForObjectInContext(Object) | Gibt einen IDispatch-Schnittstellenzeiger aus einem verwalteten Objekt zurück, falls sich der Aufrufer in demselben Kontext wie das Objekt befindet. |
![]() ![]() |
GetITypeInfoForType(Type) | Gibt eine System.Runtime.InteropServices.ComTypes.ITypeInfo-Schnittstelle aus einem verwalteten Typ zurück. |
![]() ![]() |
GetIUnknownForObject(Object) | Gibt eine IUnknown -Schnittstelle aus einem verwalteten Objekt. |
![]() ![]() |
GetIUnknownForObjectInContext(Object) | Gibt eine IUnknown -Schnittstelle aus einem verwalteten Objekt, wenn der Aufrufer in demselben Kontext wie das Objekt befindet. |
![]() ![]() |
GetLastWin32Error() | Gibt den Fehlercode zurück, der durch die letzte nicht verwaltete Funktion zurückgegeben wurde, die mit einem Plattformaufruf aufgerufen wurde und bei der das DllImportAttribute.SetLastError-Flag festgelegt wurde. |
![]() ![]() |
GetManagedThunkForUnmanagedMethodPtr(IntPtr, IntPtr, Int32) | Veraltet. Ruft einen Zeiger auf eine zur Laufzeit generierte Funktion ab, die einen Aufruf aus verwaltetem zu nicht verwaltetem Code marshallt. |
![]() ![]() |
GetMethodInfoForComSlot(Type, Int32, ComMemberType) | Ruft ein MemberInfo-Objekt für den angegebenen Slot in der virtuellen Funktionstabelle (Vtable oder VTBL) ab. |
![]() ![]() |
GetNativeVariantForObject(Object, IntPtr) | Konvertiert ein Objekt in einen COM-VARIANT. |
![]() ![]() |
GetNativeVariantForObject<T>(T, IntPtr) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Konvertiert ein Objekt eines angegebenen Typs in eine COM VARIANTE. |
![]() ![]() |
GetObjectForIUnknown(IntPtr) | Gibt eine Instanz eines Typs, der durch einen Zeiger auf ein COM-Objekt stellt die IUnknown Schnittstelle. |
![]() ![]() |
GetObjectForNativeVariant(IntPtr) | Konvertiert einen COM-VARIANT in ein Objekt. |
![]() ![]() |
GetObjectForNativeVariant<T>(IntPtr) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Konvertiert ein COM VARIANTE in ein Objekt eines angegebenen Typs . |
![]() ![]() |
GetObjectsForNativeVariants(IntPtr, Int32) | Konvertiert ein Array mit COM VARIANTs in ein Array von Objekten. |
![]() ![]() |
GetObjectsForNativeVariants<T>(IntPtr, Int32) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Konvertiert ein Array mit COM-VARIANT in ein Array eines angegebenen Typs. |
![]() ![]() |
GetStartComSlot(Type) | Ruft den ersten Slot in der VTBL (Vtable oder virtuelle Funktionstabelle) ab, der benutzerdefinierte Methoden enthält. |
![]() ![]() |
GetThreadFromFiberCookie(Int32) | Veraltet. Konvertiert ein Fibercookie in die entsprechende System.Threading.Thread-Instanz. |
![]() ![]() |
GetTypedObjectForIUnknown(IntPtr, Type) | Gibt ein verwaltetes Objekt eines angegebenen Typs zurück, das ein COM-Objekt darstellt. |
![]() ![]() |
GetTypeForITypeInfo(IntPtr) | Konvertiert ein nicht verwaltetes ITypeInfo-Objekt in ein verwaltetes System.Type-Objekt. |
![]() ![]() |
GetTypeFromCLSID(Guid) | Gibt den Typ zurück, dem die angegebene Klassen-ID (CLSID) zugeordnet ist. |
![]() ![]() |
GetTypeInfoName(ITypeInfo) | Ruft den Namen des Typs ab, der durch ein ITypeInfo-Objekt dargestellt wird. |
![]() ![]() |
GetTypeInfoName(UCOMITypeInfo) | Veraltet. Ruft den Namen des Typs ab, der durch ein ITypeInfo-Objekt dargestellt wird. |
![]() ![]() |
GetTypeLibGuid(ITypeLib) | Ruft die Bibliothek-ID (LIBID) einer Typbibliothek ab. |
![]() ![]() |
GetTypeLibGuid(UCOMITypeLib) | Veraltet. Ruft die Bibliothek-ID (LIBID) einer Typbibliothek ab. |
![]() ![]() |
GetTypeLibGuidForAssembly(Assembly) | Ruft die Bibliothek-ID (LIBID) ab, die einer Typbibliothek beim Export aus der angegebenen Assembly zugewiesen wird. |
![]() ![]() |
GetTypeLibLcid(ITypeLib) | Ruft die LCID einer Typbibliothek ab. |
![]() ![]() |
GetTypeLibLcid(UCOMITypeLib) | Veraltet. Ruft die LCID einer Typbibliothek ab. |
![]() ![]() |
GetTypeLibName(ITypeLib) | Ruft den Namen einer Typbibliothek ab. |
![]() ![]() |
GetTypeLibName(UCOMITypeLib) | Veraltet. Ruft den Namen einer Typbibliothek ab. |
![]() ![]() |
GetTypeLibVersionForAssembly(Assembly, Int32, Int32) | Ruft die Versionsnummer einer Typbibliothek ab, die aus der angegebenen Assembly exportiert wird. |
![]() ![]() |
GetUniqueObjectForIUnknown(IntPtr) | Erstellt eine eindeutige Runtime Callable Wrapper -Objekt (RCW) für einen bestimmten IUnknown Schnittstelle. |
![]() ![]() |
GetUnmanagedThunkForManagedMethodPtr(IntPtr, IntPtr, Int32) | Veraltet. Ruft einen Zeiger auf eine zur Laufzeit generierte Funktion ab, die einen Aufruf aus nicht verwaltetem zu verwaltetem Code marshallt. |
![]() ![]() |
IsComObject(Object) | Gibt an, ob ein angegebenes Objekt ein COM-Objekt darstellt. |
![]() ![]() |
IsTypeVisibleFromCom(Type) | Gibt an, ob ein Typ für COM-Clients sichtbar ist. |
![]() ![]() |
NumParamBytes(MethodInfo) | Berechnet die Anzahl der Bytes im nicht verwalteten Speicher, die zum Speichern der Parameter für die angegebene Methode erforderlich ist. |
![]() ![]() |
OffsetOf(Type, String) | Gibt den Feldoffset der nicht verwalteten Form der verwalteten Klasse zurück. |
![]() ![]() |
OffsetOf<T>(String) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Gibt den Feldoffset der nicht verwalteten Form einer festgelegten verwalteten Klasse zurück. |
![]() ![]() |
Prelink(MethodInfo) | Führt einmalige Aufgaben zur Methodeneinrichtung aus, ohne die Methode aufzurufen. |
![]() ![]() |
PrelinkAll(Type) | Führt eine Linkervorstufen-Prüfung für alle Methoden einer Klasse durch. |
![]() ![]() |
PtrToStringAnsi(IntPtr) | Kopiert alle Zeichen bis zum ersten NULL-Zeichen aus einer nicht verwalteten ANSI-Zeichenfolge in einen verwalteten String und erweitert die einzelnen ANSI-Zeichen zu UNICODE-Zeichen. |
![]() ![]() |
PtrToStringAnsi(IntPtr, Int32) | Reserviert einen verwalteten String, kopiert eine angegebene Anzahl von Zeichen aus einer nicht verwalteten ANSI-Zeichenfolge hinein und erweitert jedes ANSI-Zeichen zu einem Unicode-Zeichen. |
![]() ![]() |
PtrToStringAuto(IntPtr) | Reserviert einen verwalteten String und kopiert alle Zeichen bis zum ersten NULL-Zeichen aus einer Zeichenfolge hinein, die im nicht verwalteten Speicher gespeichert ist. |
![]() ![]() |
PtrToStringAuto(IntPtr, Int32) | Reserviert einen verwalteten String und kopiert die angegebene Anzahl von Zeichen aus einer in nicht verwaltetem Speicher gespeicherten Zeichenfolge hinein. |
![]() ![]() |
PtrToStringBSTR(IntPtr) | Reserviert einen verwalteten String und kopiert eine binary string (BSTR) im nicht verwalteten Speicher hinein. |
![]() ![]() |
PtrToStringUni(IntPtr) | Reserviert einen verwalteten String und kopiert alle Zeichen bis zum ersten NULL-Zeichen aus einer nicht verwalteten Unicode-Zeichenfolge hinein. |
![]() ![]() |
PtrToStringUni(IntPtr, Int32) | Reserviert einen verwalteten String und kopiert eine angegebene Anzahl von Zeichen aus einer nicht verwalteten Unicode-Zeichenfolge hinein. |
![]() ![]() |
PtrToStructure(IntPtr, Object) | Marshallt Daten aus einem nicht verwalteten Speicherblock zu einem verwalteten Objekt. |
![]() ![]() |
PtrToStructure(IntPtr, Type) | Marshallt Daten aus einem nicht verwalteten Speicherblock zu einem neu belegten, verwalteten Objekt des angegebenen Typs. |
![]() ![]() |
PtrToStructure<T>(IntPtr) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Marshallt Daten aus einem nicht verwalteten Speicherblock zu einem neu belegten, verwalteten Objekt des von einem generischen Typparameter angegebenen Typs. |
![]() ![]() |
PtrToStructure<T>(IntPtr, T) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Marshallt Daten aus einem nicht verwalteten Speicherblock zu einem verwalteten Objekt eines festgelegten Typs. |
![]() ![]() |
QueryInterface(IntPtr, Guid, IntPtr) | Fordert einen Zeiger auf eine angegebene Schnittstelle von einem COM-Objekt an. |
![]() ![]() |
ReadByte(IntPtr) | Liest ein einzelnes Byte aus dem nicht verwalteten Speicher. |
![]() ![]() |
ReadByte(IntPtr, Int32) | Liest ein einzelnes Byte an einem angegebenen Offset (oder Index) aus dem nicht verwalteten Speicher. |
![]() ![]() |
ReadByte(Object, Int32) | Liest ein einzelnes Byte an einem angegebenen Offset (oder Index) aus dem nicht verwalteten Speicher. |
![]() ![]() |
ReadInt16(IntPtr) | Liest eine 16-Bit-Ganzzahl mit Vorzeichen aus dem nicht verwalteten Speicher. |
![]() ![]() |
ReadInt16(IntPtr, Int32) | Liest eine 16-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset aus dem nicht verwalteten Arbeitsspeicher. |
![]() ![]() |
ReadInt16(Object, Int32) | Liest eine 16-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset aus dem nicht verwalteten Arbeitsspeicher. |
![]() ![]() |
ReadInt32(IntPtr) | Liest eine 32-Bit-Ganzzahl mit Vorzeichen aus dem nicht verwalteten Speicher. |
![]() ![]() |
ReadInt32(IntPtr, Int32) | Liest eine 32-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset aus dem nicht verwalteten Arbeitsspeicher. |
![]() ![]() |
ReadInt32(Object, Int32) | Liest eine 32-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset aus dem nicht verwalteten Arbeitsspeicher. |
![]() ![]() |
ReadInt64(IntPtr) | Liest eine 64-Bit-Ganzzahl mit Vorzeichen aus dem nicht verwalteten Speicher. |
![]() ![]() |
ReadInt64(IntPtr, Int32) | Liest eine 64-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset aus dem nicht verwalteten Arbeitsspeicher. |
![]() ![]() |
ReadInt64(Object, Int32) | Liest eine 64-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset aus dem nicht verwalteten Arbeitsspeicher. |
![]() ![]() |
ReadIntPtr(IntPtr) | Liest eine ganze Zahl von prozessoreigener Größe aus dem nicht verwalteten Speicher. |
![]() ![]() |
ReadIntPtr(IntPtr, Int32) | Liest eine ganze Zahl von prozessoreigener Größe an einem angegebenen Offset aus dem nicht verwalteten Speicher. |
![]() ![]() |
ReadIntPtr(Object, Int32) | Liest eine ganze Zahl von prozessoreigener Größe aus dem nicht verwalteten Speicher. |
![]() ![]() |
ReAllocCoTaskMem(IntPtr, Int32) | Ändert die Größe eines bereits mit AllocCoTaskMem belegten Speicherblocks. |
![]() ![]() |
ReAllocHGlobal(IntPtr, IntPtr) | Ändert die Größe eines bereits mit AllocHGlobal belegten Speicherblocks. |
![]() ![]() |
Release(IntPtr) | Dekrementiert den Verweiszähler für die angegebene Schnittstelle. |
![]() ![]() |
ReleaseComObject(Object) | Dekrementiert den Verweiszähler des dem angegebenen COM-Objekt zugeordneten Runtime Callable Wrapper (RCW). |
![]() ![]() |
ReleaseThreadCache() | Veraltet. Gibt den Threadcache frei. |
![]() ![]() |
SecureStringToBSTR(SecureString) | Weist eine nicht verwaltete binary string (BSTR) und kopiert den Inhalt eines verwalteten SecureString in dieses Objekt. |
![]() ![]() |
SecureStringToCoTaskMemAnsi(SecureString) | Kopiert den Inhalt eines verwalteten SecureString-Objekts in einen Speicherblock, der von der nicht verwalteten Speicherbelegung für COM-Aufgaben reserviert wurde. |
![]() ![]() |
SecureStringToCoTaskMemUnicode(SecureString) | Kopiert den Inhalt eines verwalteten SecureString-Objekts in einen Speicherblock, der von der nicht verwalteten Speicherbelegung für COM-Aufgaben reserviert wurde. |
![]() ![]() |
SecureStringToGlobalAllocAnsi(SecureString) | Kopiert den Inhalt eines verwalteten SecureString in den nicht verwalteten Speicher und konvertiert ihn beim Kopieren in das ANSI-Format. |
![]() ![]() |
SecureStringToGlobalAllocUnicode(SecureString) | Kopiert den Inhalt eines verwalteten SecureString-Objekts in den nicht verwalteten Speicher. |
![]() ![]() |
SetComObjectData(Object, Object, Object) | Legt Daten fest, auf die durch den angegebenen Schlüssel im angegebenen COM-Objekt verwiesen wird. |
![]() ![]() |
SizeOf(Object) | Gibt die nicht verwaltete Größe eines Objekts in Bytes zurück. |
![]() ![]() |
SizeOf(Type) | Gibt die Größe eines nicht verwalteten Typs in Bytes zurück. |
![]() ![]() |
SizeOf<T>() | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Gibt die Größe eines nicht verwalteten Typs in Bytes zurück. |
![]() ![]() |
SizeOf<T>(T) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Gibt die nicht verwaltete Größe eines Objekts eines angegebenen Typs in Bytes zurück. |
![]() ![]() |
StringToBSTR(String) | Ordnet eine BSTR und kopiert den Inhalt eines verwalteten String hinein. |
![]() ![]() |
StringToCoTaskMemAnsi(String) | Kopiert den Inhalt eines verwalteten String in einen Speicherblock, der von der nicht verwalteten Speicherbelegung für COM-Aufgaben reserviert wurde. |
![]() ![]() |
StringToCoTaskMemAuto(String) | Kopiert den Inhalt eines verwalteten String in einen Speicherblock, der von der nicht verwalteten Speicherbelegung für COM-Aufgaben reserviert wurde. |
![]() ![]() |
StringToCoTaskMemUni(String) | Kopiert den Inhalt eines verwalteten String in einen Speicherblock, der von der nicht verwalteten Speicherbelegung für COM-Aufgaben reserviert wurde. |
![]() ![]() |
StringToHGlobalAnsi(String) | Kopiert den Inhalt eines verwalteten String in den nicht verwalteten Speicher und konvertiert ihn beim Kopieren in das ANSI-Format. |
![]() ![]() |
StringToHGlobalAuto(String) | Kopiert den Inhalt eines verwalteten String in den nicht verwalteten Speicher und konvertiert ihn ggf. in das ANSI-Format. |
![]() ![]() |
StringToHGlobalUni(String) | Kopiert den Inhalt eines verwalteten String in den nicht verwalteten Speicher. |
![]() ![]() |
StructureToPtr(Object, IntPtr, Boolean) | Marshallt Daten aus einem verwalteten Objekt zu einem nicht verwalteten Speicherblock. |
![]() ![]() |
StructureToPtr<T>(T, IntPtr, Boolean) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Marshallt Daten aus einem verwalteten Objekt eines festgelegten Typs zu einem nicht verwalteten Speicherblock. |
![]() ![]() |
ThrowExceptionForHR(Int32) | Löst eine Ausnahme mit einem bestimmten HRESULT-Fehlerwert aus. |
![]() ![]() |
ThrowExceptionForHR(Int32, IntPtr) | Löst eine Ausnahme mit einem bestimmten Fehler-HRESULT auf Grundlage der angegebenen IErrorInfo Schnittstelle. |
![]() ![]() |
UnsafeAddrOfPinnedArrayElement(Array, Int32) | Ruft die Adresse des Elements am angegebenen Index des angegebenen Arrays ab. |
![]() ![]() |
UnsafeAddrOfPinnedArrayElement<T>(T[], Int32) | [Wird nur in .NET Framework 4.5.1 und neueren Versionen unterstützt] Ruft die Adresse des Elements am angegebenen Index in einem Arrays des angegebenen Typs ab. |
![]() ![]() |
WriteByte(IntPtr, Byte) | Schreibt einen einzelnen Bytewert in den nicht verwalteten Speicher. |
![]() ![]() |
WriteByte(IntPtr, Int32, Byte) | Schreibt einen einzelnen Bytewert an einem angegebenen Offset in den nicht verwalteten Arbeitsspeicher. |
![]() ![]() |
WriteByte(Object, Int32, Byte) | Schreibt einen einzelnen Bytewert an einem angegebenen Offset in den nicht verwalteten Arbeitsspeicher. |
![]() ![]() |
WriteInt16(IntPtr, Char) | Schreibt ein Zeichen als 16-Bit-Ganzzahl in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt16(IntPtr, Int16) | Schreibt eine 16-Bit-Ganzzahl in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt16(IntPtr, Int32, Char) | Schreibt den Wert einer 16-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt16(IntPtr, Int32, Int16) | Schreibt den Wert einer 16-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt16(Object, Int32, Char) | Schreibt den Wert einer 16-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt16(Object, Int32, Int16) | Schreibt den Wert einer 16-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt32(IntPtr, Int32) | Schreibt eine 32-Bit-Ganzzahl mit Vorzeichen in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt32(IntPtr, Int32, Int32) | Schreibt den Wert einer 32-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt32(Object, Int32, Int32) | Schreibt den Wert einer 32-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt64(IntPtr, Int32, Int64) | Schreibt den Wert einer 64-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt64(IntPtr, Int64) | Schreibt eine 64-Bit-Ganzzahl mit Vorzeichen in den nicht verwalteten Speicher. |
![]() ![]() |
WriteInt64(Object, Int32, Int64) | Schreibt den Wert einer 64-Bit-Ganzzahl mit Vorzeichen an einem angegebenen Offset in den nicht verwalteten Speicher. |
![]() ![]() |
WriteIntPtr(IntPtr, Int32, IntPtr) | Schreibt einen Ganzzahlwert von prozessoreigener Größe am angegebenen Offset in den nicht verwalteten Speicher. |
![]() ![]() |
WriteIntPtr(IntPtr, IntPtr) | Schreibt einen Ganzzahlwert von prozessoreigener Größe in den nicht verwalteten Speicher. |
![]() ![]() |
WriteIntPtr(Object, Int32, IntPtr) | Schreibt einen Ganzzahlwert von prozessoreigener Größe in den nicht verwalteten Speicher. |
![]() ![]() |
ZeroFreeBSTR(IntPtr) | Gibt eine BSTR Zeiger, der belegt wurde mit der SecureStringToBSTR Methode. |
![]() ![]() |
ZeroFreeCoTaskMemAnsi(IntPtr) | Gibt einen nicht verwalteten Zeichenfolgenzeiger frei, der mit der SecureStringToCoTaskMemAnsi-Methode reserviert wurde. |
![]() ![]() |
ZeroFreeCoTaskMemUnicode(IntPtr) | Gibt einen nicht verwalteten Zeichenfolgenzeiger frei, der mit der SecureStringToCoTaskMemUnicode-Methode reserviert wurde. |
![]() ![]() |
ZeroFreeGlobalAllocAnsi(IntPtr) | Gibt einen nicht verwalteten Zeichenfolgenzeiger frei, der mit der SecureStringToGlobalAllocAnsi-Methode reserviert wurde. |
![]() ![]() |
ZeroFreeGlobalAllocUnicode(IntPtr) | Gibt einen nicht verwalteten Zeichenfolgenzeiger frei, der mit der SecureStringToGlobalAllocUnicode-Methode reserviert wurde. |
Felder
Name | Beschreibung | |
---|---|---|
![]() ![]() |
SystemDefaultCharSize | Stellt die Standardzeichengröße für das System dar. Der Standardwert ist 2 für Unicode-Systeme und 1 für ANSI-Systeme. Dieses Feld ist schreibgeschützt. |
![]() ![]() |
SystemMaxDBCSCharSize | Stellt die maximale Größe eines DBCS (Double-Byte Character Set) für das aktuelle Betriebssystem in Bytes dar. Dieses Feld ist schreibgeschützt. |
Hinweise
Die static definierten Methoden der Marshal -Klasse für die Verwendung mit nicht verwaltetem Code unverzichtbar sind. Die meisten in dieser Klasse definierte Methoden werden i. d. r. von Entwicklern verwendet, die eine Brücke zwischen verwalteten und nicht verwalteten Programmiermodellen bereitstellen möchten. Zum Beispiel die StringToHGlobalAnsi Methode kopiert ANSI-Zeichen aus einer angegebenen Zeichenfolge (im verwalteten Heap) in einen Puffer im nicht verwalteten Heap. Sie weist auch die Zielheap die richtige Größe.
Die common Language Runtime bietet spezielle Marshallingfunktionen. Weitere Informationen zum Marshallingverhalten finden Sie unter Interop Marshaling.
Die Read und Write Methoden in der Marshal -Klasse unterstützen ausgerichteten und nicht ausgerichteten Zugriff.
Beispiele
Das folgende Beispiel zeigt, wie Sie verschiedene Methoden, definiert durch die Marshal Klasse.
using System;
using System.Text;
using System.Runtime.InteropServices;
public struct Point
{
public Int32 x, y;
}
public sealed class App
{
static void Main()
{
// Demonstrate the use of public static fields of the Marshal class.
Console.WriteLine("SystemDefaultCharSize={0}, SystemMaxDBCSCharSize={1}",
Marshal.SystemDefaultCharSize, Marshal.SystemMaxDBCSCharSize);
// Demonstrate the use of the SizeOf method of the Marshal class.
Console.WriteLine("Number of bytes needed by a Point object: {0}",
Marshal.SizeOf(typeof(Point)));
Point p = new Point();
Console.WriteLine("Number of bytes needed by a Point object: {0}",
Marshal.SizeOf(p));
// Demonstrate how to call GlobalAlloc and
// GlobalFree using the Marshal class.
IntPtr hglobal = Marshal.AllocHGlobal(100);
Marshal.FreeHGlobal(hglobal);
// Demonstrate how to use the Marshal class to get the Win32 error
// code when a Win32 method fails.
Boolean f = CloseHandle(new IntPtr(-1));
if (!f)
{
Console.WriteLine("CloseHandle call failed with an error code of: {0}",
Marshal.GetLastWin32Error());
}
}
// This is a platform invoke prototype. SetLastError is true, which allows
// the GetLastWin32Error method of the Marshal class to work correctly.
[DllImport("Kernel32", ExactSpelling = true, SetLastError = true)]
static extern Boolean CloseHandle(IntPtr h);
}
// This code produces the following output.
//
// SystemDefaultCharSize=2, SystemMaxDBCSCharSize=1
// Number of bytes needed by a Point object: 8
// Number of bytes needed by a Point object: 8
// CloseHandle call failed with an error code of: 6
Imports System
Imports System.Text
Imports System.Runtime.InteropServices
Imports System.Security.Permissions
Public Structure Point
Public x, y As Int32
End Structure
Public NotInheritable Class App
<SecurityPermission(SecurityAction.LinkDemand, Unrestricted:=True)> _
Shared Sub Main()
' Demonstrate the use of public static fields of the Marshal class.
Console.WriteLine("SystemDefaultCharSize={0}, SystemMaxDBCSCharSize={1}", Marshal.SystemDefaultCharSize, Marshal.SystemMaxDBCSCharSize)
' Demonstrate the use of the SizeOf method of the Marshal class.
Console.WriteLine("Number of bytes needed by a Point object: {0}", Marshal.SizeOf(GetType(Point)))
Dim p As New Point()
Console.WriteLine("Number of bytes needed by a Point object: {0}", Marshal.SizeOf(p))
' Demonstrate how to call GlobalAlloc and
' GlobalFree using the Marshal class.
Dim hglobal As IntPtr = Marshal.AllocHGlobal(100)
Marshal.FreeHGlobal(hglobal)
' Demonstrate how to use the Marshal class to get the Win32 error
' code when a Win32 method fails.
Dim f As [Boolean] = CloseHandle(New IntPtr(-1))
If Not f Then
Console.WriteLine("CloseHandle call failed with an error code of: {0}", Marshal.GetLastWin32Error())
End If
End Sub
' This is a platform invoke prototype. SetLastError is true, which allows
' the GetLastWin32Error method of the Marshal class to work correctly.
<DllImport("Kernel32", ExactSpelling:=True, SetLastError:=True)> _
Shared Function CloseHandle(ByVal h As IntPtr) As [Boolean]
End Function
End Class
' This code produces the following output.
'
' SystemDefaultCharSize=2, SystemMaxDBCSCharSize=1
' Number of bytes needed by a Point object: 8
' Number of bytes needed by a Point object: 8
' CloseHandle call failed with an error code of: 6
using namespace System;
using namespace System::Runtime::InteropServices;
public value struct Point
{
public:
property int X;
property int Y;
};
extern bool CloseHandle(IntPtr h);
int main()
{
// Demonstrate the use of public static fields of the Marshal
// class.
Console::WriteLine(
"SystemDefaultCharSize={0},SystemMaxDBCSCharSize={1}",
Marshal::SystemDefaultCharSize,
Marshal::SystemMaxDBCSCharSize);
// Demonstrate the use of the SizeOf method of the Marshal
// class.
Console::WriteLine("Number of bytes needed by a Point object: {0}",
Marshal::SizeOf(Point::typeid));
Point point;
Console::WriteLine("Number of bytes needed by a Point object: {0}",
Marshal::SizeOf(point));
// Demonstrate how to call GlobalAlloc and
// GlobalFree using the Marshal class.
IntPtr hglobal = Marshal::AllocHGlobal(100);
Marshal::FreeHGlobal(hglobal);
// Demonstrate how to use the Marshal class to get the Win32
// error code when a Win32 method fails.
bool isCloseHandleSuccess = CloseHandle(IntPtr(-1));
if (!isCloseHandleSuccess)
{
Console::WriteLine(
"CloseHandle call failed with an error code of: {0}",
Marshal::GetLastWin32Error());
}
};
// This is a platform invoke prototype. SetLastError is true,
// which allows the GetLastWin32Error method of the Marshal class
// to work correctly.
[DllImport("Kernel32", ExactSpelling = true, SetLastError = true)]
extern bool CloseHandle(IntPtr h);
// This code produces the following output.
//
// SystemDefaultCharSize=2, SystemMaxDBCSCharSize=1
// Number of bytes needed by a Point object: 8
// Number of bytes needed by a Point object: 8
// CloseHandle call failed with an error code of: 6
Versionsinformationen
Universelle Windows-Plattform
Verfügbar seit 8
.NET Framework
Verfügbar seit 1.1
Portierbare Klassenbibliothek
Unterstützt in: portierbare .NET-Plattformen
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.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
System.Runtime.InteropServices-Namespace
Zurück zum Anfang