(0) exportieren Drucken
Alle erweitern
Erweitern Minimieren
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

UnmanagedType-Enumeration

Gibt an, wie Parameter oder Felder in nicht verwaltetem Code gemarshallt werden.

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

[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum UnmanagedType

MembernameBeschreibung
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsAnsiBStrEine ANSI-Zeichen-Zeichenkette, die ein LENGTH-vorangestelltes einzelnes Byte ist. Sie können diesen Member für den String-Datentyp verwenden.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsAsAnyEin dynamischer Typ, der zur Laufzeit den Typ eines Objekts bestimmt und das Objekt als diesen Typ marshallt. Dieser Member ist nur für Plattformaufrufe Methode gültig.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsBoolEin boolescher Wert mit 4 Bytes (true != 0, false = 0). Dies ist der Win32-BOOL-Typ.
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsBStrEine Zeichenfolge aus Unicode-Zeichen, die ein Doppelbyte mit Längenpräfix ist. Sie können diesen Member, der die Standardzeichenfolge in COM darstellt, für den String-Datentyp verwenden.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsByValArrayWenn die MarshalAsAttribute.Value-Eigenschaft auf ByValArrayfestgelegt wird, muss das SizeConst Feld festgelegt werden, um die Anzahl der Elemente im Array an. Das ArraySubType-Feld kann optional den UnmanagedType der Arrayelemente enthalten, wenn zwischen verschiedenen Zeichenfolgetypen unterschieden werden muss. Sie können dieses UnmanagedType nur auf ein Array verwenden, dessen Elemente als Felder in einer Struktur angezeigt werden.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsByValTStrWird für Inlinearrays mit Zeichen fester Länge verwendet, die in einer Struktur dargestellt werden. Der Zeichentyp, der ByValTStr verwendet wird, wird vom System.Runtime.InteropServices.CharSet-Argument des System.Runtime.InteropServices.StructLayoutAttribute-Attributs bestimmt, das auf die enthaltende Struktur angewendet wird. Verwenden Sie immer das MarshalAsAttribute.SizeConst-Feld, um die Größe des Arrays anzugeben.

ByValTStr -Typen von .NET Framework verhalten sich in einer Struktur wie C-Zeichenfolgen mit fester Länge (beispielsweise char s[5]). Das Verhalten in verwaltetem Code weicht vom Verhalten in Microsoft Visual Basic 6.0 ab, das nicht nullterminiert ist (beispielsweise MyString As String * 5).

Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsCurrencyEin Währungs des Arrays. Wird für System.Decimal verwendet, um den Dezimalwert als COM-Währungstyp und nicht alsDecimal zu marshallen.
Unterstützt von  Portable KlassenbibliothekCustomMarshalerGibt die benutzerdefinierte Marshaller - Klasse veranschaulicht, wenn Sie mit dem MarshalAsAttribute.MarshalType oder MarshalAsAttribute.MarshalTypeRef Feld verwendet werden. Das Feld MarshalAsAttribute.MarshalCookie kann zum Übergeben zusätzlicher Informationen an den benutzerdefinierten Marshaller verwendet werden. Sie können diesen Member für beliebige Verweistypen verwenden.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsErrorEin systemeigener Typ, der I4 oder U4 zugeordnet ist, und bewirkt, der den Parameter als ein HRESULT in der exportierten Typbibliothek exportiert werden soll.
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsFunctionPtrEine Ganzzahl, die als C-Funktionszeiger verwendet werden kann. Sie können diesen Member für einen Delegate Datentyp oder für einen Typ verwenden, der von Delegateerbt.
Unterstützt in .NET für Windows Store-AppsHStringEine Windows-Runtime Zeichenfolge. Sie können diesen Member für den System.String-Datentyp verwenden.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsI1Eine 1-Byte-Ganzzahl mit Vorzeichen. Sie können mit diesem Member einen booleschen Wert in einen 1-Byte-bool im C-Format (true = 1, false = 0) transformieren.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsI2Eine 2-Byte-Ganzzahl mit Vorzeichen.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsI4Eine 4-Byte-Ganzzahl mit Vorzeichen.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsI8Eine 8-Byte-Ganzzahl mit Vorzeichen.
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIDispatchEin IDispatch-Zeiger in COM (Object in Microsoft Visual Basic 6.0).
Unterstützt in .NET für Windows Store-AppsIInspectableEin Schnittstellenzeiger Windows-Runtime. Sie können diesen Member für den Object-Datentyp verwenden.
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsInterfaceEin COM-Schnittstellenzeiger. Die Guid der Schnittstelle wird aus den Metadaten der Klasse ermittelt. Mit diesem Member geben Sie den genauen Schnittstellentyp oder den Standardschnittstellentyp an, wenn Sie ihn auf eine Klasse anwenden. Dieser Member führt zum selben Verhalten wie UnmanagedType.IUnknown, wenn Sie diese dem Object Datentyp anwenden.
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsIUnknownEin COM-IUnknown-Zeiger. Sie können diesen Member für den Object-Datentyp verwenden.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsLPArrayEin Zeiger auf das erste Element eines C-Arrays. Beim Marshallen von verwaltetem zu nicht verwaltetem Code wird die Länge des Arrays durch die Länge des verwalteten Arrays bestimmt. Beim Marshallen von nicht verwaltetem zu verwaltetem Code wird die Länge des Arrays mit den Feldern und MarshalAsAttribute.SizeConstMarshalAsAttribute.SizeParamIndex, optional gefolgt vom nicht verwalteten Typ der Elemente im Array, wenn unterscheiden muss unter Zeichenfolgentypen.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsLPStrEine aus ANSI-Zeichen bestehende, mit NULL beendete Einzelbyte-Zeichenfolge. Sie können diesen Member für den System.String und System.Text.StringBuilder Datentypen verwenden.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsLPStructEin Zeiger auf eine C-Struktur, mit dem verwaltete formatierte Klassen gemarshallt werden. Dieser Member ist nur für Plattformaufrufe Methode gültig.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsLPTStrEine plattformabhängige Zeichenfolge: ANSI in Unicode unter Windows 98 und Windows NT und Windows XP. Dieser Wert wird nur für Plattformaufrufe und nicht für COM-Interop unterstützt, da das Exportieren einer Zeichenfolge vom Typ LPTStr nicht unterstützt wird.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsLPWStrEine aus Unicode-Zeichen bestehende, mit NULL beendete 2-Byte-Zeichenfolge.

Beachten Sie, dass Sie den LPWStr-Wert mit einer nicht verwalteten Zeichenfolge nicht verwenden können, sofern die Zeichenfolge erstellt wurde, indem die CoTaskMemAlloc nicht verwaltete Funktion übergeben wird.

Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsR4Eine 4-Byte-Gleitkommawert-Zahl.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsR8Eine 8-Byte-Gleitkommawert-Zahl.
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsSafeArray SafeArray , das ein selbstbeschreibendes Array handelt, das den Typ, Rang und Grenzen der zugeordneten Array von Daten enthält. Sie können diesen Member mit dem MarshalAsAttribute.SafeArraySubType-Feld verwenden, um den Standardelementtyp zu überschreiben.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsStructEin VARIANT zum Marshallen verwalteter formatierter Klassen und Werttypen.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsSysIntEine plattformabhängige Ganzzahl mit Vorzeichen.: 4 Byte für 32-Bit-Windows, Windows-Betriebssysteme (auf 8 Bytes.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsSysUIntEine plattformabhängige Ganzzahl ohne Vorzeichen.: 4 Byte für 32-Bit-Windows, Windows-Betriebssysteme (auf 8 Bytes.
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsTBStrEine plattformabhängige Zeichenfolge mit Längenpräfix, char : ANSI in Unicode unter Windows 98, Windows NT. Dieser BSTR-ähnliche Member wird nur selten verwendet.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsU1Eine 1-Byte-Ganzzahl ohne Vorzeichen.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsU2Eine 2-Byte-Ganzzahl ohne Vorzeichen.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsU4Eine 4-Byte-Ganzzahl ohne Vorzeichen.
Unterstützt von XNA FrameworkUnterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsU8Eine 8-Byte-Ganzzahl ohne Vorzeichen.
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsVariantBoolEin durch OLE definierter VARIANT_BOOL-Typ mit 2 Bytes (true = -1, false = 0).
Unterstützt von  Portable KlassenbibliothekUnterstützt in .NET für Windows Store-AppsVBByRefStrEin Wert, der Visual Basic-Code aktiviert, um eine Zeichenfolge in nicht verwaltetem Code zu ändern und die Ergebnisse aufweisen, die in verwaltetem Code widergespiegelt werden. Dieser Wert wird nur für Plattformaufrufe unterstützt.

Verwenden Sie die UnmanagedType-Enumeration mit dem System.Runtime.InteropServices.MarshalAsAttribute-Attribut, um anzugeben, wie Typen bei der Interoperation mit nicht verwaltetem Code gemarshallt werden. Sie können diese Enumeration auch zum Marshallen von Code mithilfe einfacher Werttypen (I1, I2, I4, I8, R4, R8, U2, U4 und U8), nicht verwalteter, im .NET Framework nicht verfügbarer Typen und einer Reihe sonstiger Typen verwenden.

Weitere Informationen finden Sie unter Interoperation mit nicht verwaltetem Code.

Das folgende Codefragment zeigt, wie im verwalteten Quellcode, eine nicht verwaltete Schnittstelle deklariert, die von einer COM-Komponente implementiert wird. Das System.Runtime.InteropServices.ComImportAttribute-Attribut verhindert, dass die IMyStorage-Schnittstelle für COM exportierte sich wieder. (COM-Clients sollten die vorhandene COM-Komponente direkt verwenden.) In diesem Beispiel werden mit MarshalAsAttribute mehrere UnmanagedType-Member angegeben, die die von der ursprünglichen COM-Schnittstelle verwendeten Typen darstellen.


using System;
using System.Runtime.InteropServices;

namespace MyModule
{
	// If you do not have a type library for an interface
	// you can redeclare it using ComImportAttribute.

	// This is how the interface would look in an idl file.

	//[
	//object,
	//uuid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26"),
	//dual,	helpstring("IMyStorage Interface"),
	//pointer_default(unique)
	//]
	//interface IMyStorage : IDispatch
	//{
	//	[id(1)]
	//	HRESULT GetItem([in] BSTR bstrName, [out, retval] IDispatch ** ppItem);
	//	[id(2)]
	//	HRESULT GetItems([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT)* pItems);
	//	[id(3)]
	//	HRESULT GetItemDescriptions([in] BSTR bstrLocation, [out] SAFEARRAY(VARIANT) ** ppItems);
	//	[id(4), propget]
	//	HRESULT get_IsEmpty([out, retval] BOOL * pfEmpty);
	//};

	// This is the managed declaration.

	[ComImport]
	[Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")]
	public interface IMyStorage  
	{
		[DispId(1)]
		[return : MarshalAs( UnmanagedType.Interface )]
		Object GetItem( [In, MarshalAs( UnmanagedType.BStr )] String bstrName );

		[DispId(2)]
		void GetItems( [In, MarshalAs( UnmanagedType.BStr )] String bstrLocation, 
			[Out, MarshalAs( UnmanagedType.SafeArray, 
					  SafeArraySubType = VarEnum.VT_VARIANT )] out Object[] Items );


		[DispId(3)]
		void GetItemDescriptions( [In] String bstrLocation, 
			[In, Out, MarshalAs( UnmanagedType.SafeArray )] ref Object[] varDescriptions );

		bool IsEmpty 
		{
			[DispId(4)]
			[return : MarshalAs( UnmanagedType.VariantBool )]
			get;
		}
	}
}


.NET Framework

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Portable Klassenbibliothek

Unterstützt in: Portable Klassenbibliothek

.NET für Windows Store-Apps

Unterstützt in: Windows 8

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft