UnmanagedType UnmanagedType UnmanagedType UnmanagedType Enum

Definition

パラメーターまたはフィールドをアンマネージ コードにマーシャリングする方法を示します。 Identifies how to marshal parameters or fields to unmanaged code.

public enum class UnmanagedType
[System.Runtime.InteropServices.ComVisible(true)]
[Serializable]
public enum UnmanagedType
type UnmanagedType = 
Public Enum UnmanagedType
Inheritance
UnmanagedTypeUnmanagedTypeUnmanagedTypeUnmanagedType
Attributes
ComVisibleAttribute SerializableAttribute

Fields

AnsiBStr AnsiBStr AnsiBStr AnsiBStr 35

長さを示すプレフィックスを付けた 1 バイトの ANSI 文字列。 An ANSI character string that is a length-prefixed single byte. このメンバーは String データ型で使用できます。 You can use this member on the String data type.

AsAny AsAny AsAny AsAny 40

実行時にオブジェクトの型を確認し、その型としてオブジェクトをマーシャリングする動的な型。 A dynamic type that determines the type of an object at run time and marshals the object as that type. このメンバーは、プラットフォーム呼び出しメソッドにのみ有効です。 This member is valid for platform invoke methods only.

Bool Bool Bool Bool 2

4 バイトの Boolean 値 (true != 0、false = 0)。 A 4-byte Boolean value (true != 0, false = 0). これは Win32 BOOL 型です。 This is the Win32 BOOL type.

BStr BStr BStr BStr 19

長さを示すプリフィックスを付けた 2 バイトの Unicode 文字列。 A Unicode character string that is a length-prefixed double byte. このメンバー (COM の既定の文字列) は、String データ型で使用できます。 You can use this member, which is the default string in COM, on the String data type.

ByValArray ByValArray ByValArray ByValArray 30

Value プロパティを ByValArray に設定した場合、SizeConst フィールドは、配列の要素数を示すように設定する必要があります。 When the Value property is set to ByValArray, the SizeConst field must be set to indicate the number of elements in the array. ArraySubType フィールドには、文字列型を区別する必要がある場合に、オプションとして配列要素の UnmanagedType を格納できます。 The ArraySubType field can optionally contain the UnmanagedType of the array elements when it is necessary to differentiate among string types. この UnmanagedType は、要素が構造体にフィールドとして定義されている配列でのみ使用できます。 You can use this UnmanagedType only on an array that whose elements appear as fields in a structure.

ByValTStr ByValTStr ByValTStr ByValTStr 23

構造体に定義されているインライン固定長文字配列で使用します。 Used for in-line, fixed-length character arrays that appear within a structure. ByValTStr で使用する文字型は、格納される構造体に適用する StructLayoutAttribute 属性の引数 CharSet によって決定されます。 The character type used with ByValTStr is determined by the CharSet argument of the StructLayoutAttribute attribute applied to the containing structure. 配列のサイズを示す場合は、常に SizeConst フィールドを使用します。 Always use the SizeConst field to indicate the size of the array.

Currency Currency Currency Currency 15

通貨型。 A currency type. 10 進値を Decimal ではなく、COM 通貨型としてマーシャリングするために、Decimal で使用します。 Used on a Decimal to marshal the decimal value as a COM currency type instead of as a Decimal.

CustomMarshaler CustomMarshaler CustomMarshaler CustomMarshaler 44

MarshalType または MarshalTypeRef フィールドと共に使用する場合に、カスタム マーシャラー クラスを指定します。 Specifies the custom marshaler class when used with the MarshalType or MarshalTypeRef field. MarshalCookie フィールドは、カスタム マーシャラーに追加の情報を渡すために使用できます。 The MarshalCookie field can be used to pass additional information to the custom marshaler. このメンバーは任意の参照型で使用できます。 You can use this member on any reference type. このメンバーは、パラメーターと戻り値にのみ有効です。 This member is valid for parameters and return values only. フィールドでは使用できません。 It cannot be used on fields.

Error Error Error Error 45

I4 または U4 に関連付けられたネイティブな型。この型により、パラメーターはエクスポート先のタイプ ライブラリに HRESULT としてエクスポートされます。 A native type that is associated with an I4 or an U4 and that causes the parameter to be exported as an HRESULT in the exported type library.

FunctionPtr FunctionPtr FunctionPtr FunctionPtr 38

C スタイルの関数ポインターとして使用できる整数値。 An integer that can be used as a C-style function pointer. このメンバーは、Delegate データ型または Delegate から継承した型で使用できます。 You can use this member on a Delegate data type or on a type that inherits from a Delegate.

HString HString HString HString 47

Windows ランタイムWindows Runtime 文字列。 A Windows ランタイムWindows Runtime string. このメンバーは String データ型で使用できます。 You can use this member on the String data type.

I1 I1 I1 I1 3

1 バイト符号付き整数。 A 1-byte signed integer. このメンバーを使用すると、Boolean 値を 1 バイトの C スタイル bool (true = 1、false = 0) に変換できます。 You can use this member to transform a Boolean value into a 1-byte, C-style bool (true = 1, false = 0).

I2 I2 I2 I2 5

2 バイト符号付き整数。 A 2-byte signed integer.

I4 I4 I4 I4 7

4 バイト符号付き整数。 A 4-byte signed integer.

I8 I8 I8 I8 9

8 バイト符号付き整数。 An 8-byte signed integer.

IDispatch IDispatch IDispatch IDispatch 26

COM の IDispatch ポインター (Microsoft Visual Basic 6.0 では Object)。 A COM IDispatch pointer (Object in Microsoft Visual Basic 6.0).

IInspectable IInspectable IInspectable IInspectable 46

Windows ランタイムWindows Runtime インターフェイス ポインター。 A Windows ランタイムWindows Runtime interface pointer. このメンバーは Object データ型で使用できます。 You can use this member on the Object data type.

Interface Interface Interface Interface 28

COM インターフェイス ポインター。 A COM interface pointer. インターフェイスの Guid は、クラス メタデータから取得します。 The Guid of the interface is obtained from the class metadata. インターフェイス型を直接指定する場合、またはクラスに適用する場合は既定のインターフェイス型を指定する場合に、このメンバーを使用します。 Use this member to specify the exact interface type or the default interface type if you apply it to a class. このメンバーは、Object データ型に適用すると、IUnknown と同じ動作を生成します。 This member produces the same behavior as IUnknown when you apply it to the Object data type.

IUnknown IUnknown IUnknown IUnknown 25

COM IUnknown ポインター。 A COM IUnknown pointer. このメンバーは Object データ型で使用できます。 You can use this member on the Object data type.

LPArray LPArray LPArray LPArray 42

C スタイル配列の最初の要素へのポインター。 A pointer to the first element of a C-style array. マネージド コードからアンマネージド コードにマーシャリングする場合、配列長はマネージド配列長によって決定されます。 When marshaling from managed to unmanaged code, the length of the array is determined by the length of the managed array. アンマネージド コードからマネージド コードにマーシャリングする場合、配列の長さは SizeConst フィールドと SizeParamIndex フィールドによって決まります。文字列の型を区別する必要がある場合は、配列内の要素のアンマネージド型も考慮されます。 When marshaling from unmanaged to managed code, the length of the array is determined from the SizeConst and SizeParamIndex fields, optionally followed by the unmanaged type of the elements within the array when it is necessary to differentiate among string types.

LPStr LPStr LPStr LPStr 20

終端が null の 1 バイトの ANSI 文字列。 A single byte, null-terminated ANSI character string. このメンバーは、String データ型および StringBuilder データ型で使用できます。 You can use this member on the String and StringBuilder data types.

LPStruct LPStruct LPStruct LPStruct 43

マネージド書式指定クラスをマーシャリングするときに使用する C スタイル構造体へのポインター。 A pointer to a C-style structure that you use to marshal managed formatted classes. このメンバーは、プラットフォーム呼び出しメソッドにのみ有効です。 This member is valid for platform invoke methods only.

LPTStr LPTStr LPTStr LPTStr 22

プラットフォームに依存する文字列。Windows 98 では ANSI、Windows NT と Windows XP では Unicode。 A platform-dependent character string: ANSI on Windows 98, and Unicode on Windows NT and Windows XP. LPTStr の文字列のエクスポートがサポートされていないため、この値は COM 相互運用ではサポートされず、プラットフォーム呼び出しのみでサポートされます。 This value is supported only for platform invoke and not for COM interop, because exporting a string of type LPTStr is not supported.

LPUTF8Str LPUTF8Str LPUTF8Str LPUTF8Str 48

UTF-8 でエンコードされた文字列へのポインター。 A pointer to a UTF-8 encoded string.

LPWStr LPWStr LPWStr LPWStr 21

終端が null の 2 バイトの Unicode 文字列。 A 2-byte, null-terminated Unicode character string.

R4 R4 R4 R4 11

4 バイトの浮動小数点数。 A 4-byte floating-point number.

R8 R8 R8 R8 12

8 バイトの浮動小数点数。 An 8-byte floating-point number.

SafeArray SafeArray SafeArray SafeArray 29

SafeArray は、関連付けられた配列データの型、ランク、および境界を格納する自己記述型の配列です。 A SafeArray, which is a self-describing array that carries the type, rank, and bounds of the associated array data. SafeArraySubType フィールドと併せてこのメンバーを使用することによって、既定の要素の型をオーバーライドできます。 You can use this member with the SafeArraySubType field to override the default element type.

Struct Struct Struct Struct 27

マネージド書式指定クラスと値型をマーシャリングするために使用する VARIANT。 A VARIANT, which is used to marshal managed formatted classes and value types.

SysInt SysInt SysInt SysInt 31

プラットフォーム依存、符号付き整数: 32 ビット Windows では 4 バイト、64 ビット Windows では 8 バイト。 A platform-dependent, signed integer: 4 bytes on 32-bit Windows, 8 bytes on 64-bit Windows.

SysUInt SysUInt SysUInt SysUInt 32

プラットフォーム依存、符号なし整数: 32 ビット Windows では 4 バイト、64 ビット Windows では 8 バイト。 A platform-dependent, unsigned integer: 4 bytes on 32-bit Windows, 8 bytes on 64-bit Windows.

TBStr TBStr TBStr TBStr 36

長さを示すプレフィックスを付けた、プラットフォームに依存する char 文字列。Windows 98 では ANSI、Windows NT では Unicode。 A length-prefixed, platform-dependent char string: ANSI on Windows 98, Unicode on Windows NT. この BSTR に似たメンバーを使用することはほとんどありません。 You rarely use this BSTR-like member.

U1 U1 U1 U1 4

1 バイト符号なし整数。 A 1-byte unsigned integer.

U2 U2 U2 U2 6

2 バイト符号なし整数。 A 2-byte unsigned integer.

U4 U4 U4 U4 8

4 バイト符号なし整数。 A 4-byte unsigned integer.

U8 U8 U8 U8 10

8 バイト符号なし整数。 An 8-byte unsigned integer.

VariantBool VariantBool VariantBool VariantBool 37

2 バイトの OLE 定義 VARIANT_BOOL 型 (true = -1、false = 0)。 A 2-byte, OLE-defined VARIANT_BOOL type (true = -1, false = 0).

VBByRefStr VBByRefStr VBByRefStr VBByRefStr 34

Visual Basic で、アンマネージド コードの文字列を変更し、結果をマネージド コードに反映できるようにする値。 A value that enables Visual Basic to change a string in unmanaged code and have the results reflected in managed code. この値は、プラットフォーム呼び出しでだけサポートされます。 This value is only supported for platform invoke.

Examples

次のコード フラグメントでは、アンマネージ COM コンポーネントによって実装されるインターフェイスをマネージ ソース コードで宣言する方法を示します。The following code fragment demonstrates how to declare, in managed source code, an unmanaged interface implemented by a COM component. System.Runtime.InteropServices.ComImportAttribute属性により、IMyStorageインターフェイスを使用して COM によってエクスポートされません。The System.Runtime.InteropServices.ComImportAttribute attribute prevents the IMyStorage interface from being exported back for use by COM. (COM クライアントは、既存の COM コンポーネントを直接使用します。)この例でMarshalAsAttributeいくつかを指定しますUnmanagedType、元の COM インターフェイスで使用される型を表すメンバー。(COM clients should use the existing COM component directly.) In this example, MarshalAsAttribute specifies serveral UnmanagedType members, which represent the types used by the original COM interface.

using namespace System;
using namespace System::Runtime::InteropServices;

// 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")]
interface class IMyStorage
{
   [DispId(1)]
   Object^ GetItem( [In,MarshalAs(UnmanagedType::BStr)]String^ bstrName );

   //[return : MarshalAs(UnmanagedType::Interface)]

   [DispId(2)]
   void GetItems( [In,MarshalAs(UnmanagedType::BStr)]String^ bstrLocation, [Out,MarshalAs(UnmanagedType::SafeArray,
   SafeArraySubType=VarEnum::VT_VARIANT)]array<Object^>^Items );

   [DispId(3)]
   void GetItemDescriptions( [In]String^ bstrLocation, [In,Out,MarshalAs(UnmanagedType::SafeArray)]array<Object^>^varDescriptions );

   property bool IsEmpty 
   {
      [DispId(4)]
      [returnvalue:MarshalAs(UnmanagedType::VariantBool)]
      bool get();
   }
};
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;
		}
	}
}
Imports System
Imports System.Runtime.InteropServices

Module 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)> _
		Function GetItem(<InAttribute(), MarshalAs(UnmanagedType.BStr)> ByVal bstrName As String) _
		   As <MarshalAs(UnmanagedType.Interface)> Object

		<DispId(2)> _
		Function GetItems(<InAttribute(), MarshalAs(UnmanagedType.BStr)> ByVal bstrLocation As String, _
		   <OutAttribute(), MarshalAs(UnmanagedType.SafeArray, SafeArraySubType := VarEnum.VT_VARIANT)> _
                                      ByVal Items() As Object)

		<DispId(3)> _
		Function GetItemDescriptions(<InAttribute()> ByVal bstrLocation As String, _
		   <InAttribute(), OutAttribute(), _
                      MarshalAs(UnmanagedType.SafeArray)> ByRef varDescriptions() As Object)

		<DispId(4)> _
		ReadOnly Property IsEmpty(<MarshalAs(UnmanagedType.VariantBool)> ByVal bEmpty As Boolean)

	End Interface
End Module

Remarks

使用して、UnmanagedTypeで列挙、System.Runtime.InteropServices.MarshalAsAttribute型がアンマネージ コードとの相互運用時にマーシャ リング方法を指定する属性。Use the UnmanagedType enumeration with the System.Runtime.InteropServices.MarshalAsAttribute attribute to specify how types are marshaled during interoperation with unmanaged code. この列挙を使用して、.NET Framework では使用できない型 (I1、I2、I4、I8、R4、R8、U2、U4、および U8) が管理されていない型の単純な値とその他のさまざまな種類を使用してコードにマーシャ リングすることができます。You can use this enumeration to marshal code using simple value types (I1, I2, I4, I8, R4, R8, U2, U4, and U8), unmanaged types that are unavailable in the .NET Framework, and various miscellaneous types.

詳細については、「アンマネージ コードとの相互運用」を参照してください。For more information, see Interoperating with Unmanaged Code.

Applies to

See Also