UnmanagedType 列挙体とは? わかりやすく解説

UnmanagedType 列挙体

パラメータまたはフィールドアンマネージ コードマーシャリングする方法示します

名前空間: System.Runtime.InteropServices
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Enumeration UnmanagedType
Dim instance As UnmanagedType
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public enum UnmanagedType
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public enum class UnmanagedType
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public enum UnmanagedType
SerializableAttribute 
ComVisibleAttribute(true) 
public enum UnmanagedType
メンバメンバ
 メンバ説明
.NET Compact Framework によるサポートAnsiBStr長さを示すプリフィックス付けた 1 バイトANSI 文字列。このメンバString データ型使用できます。 
.NET Compact Framework によるサポートAsAny実行時オブジェクトの型を確認し、その型としてオブジェクトマーシャリングする動的な型。プラットフォーム呼び出しメソッドでだけ有効です。 
.NET Compact Framework によるサポートBool4 バイトBoolean 値 (true != 0、false = 0)。これは Win32 BOOL 型です。 
.NET Compact Framework によるサポートBStr長さを示すプリフィックス付けた 2 バイトUnicode 文字列。このメンバ (COM既定文字列) は、String データ型使用できます。 
.NET Compact Framework によるサポートByValArrayMarshalAsAttribute.Value を ByValArray設定した場合、SizeConst は、配列要素数を示すように設定する必要があります。ArraySubType フィールドには、文字列型区別する必要がある場合に、オプションとして配列要素UnmanagedType格納できます。この UnmanagedType は、構造体フィールドとして定義されている配列だけで使用できます。 
.NET Compact Framework によるサポートByValTStr構造体定義されているインライン固定長文字配列使用します。ByValTStr で使用する文字型は、格納される構造体適用する System.Runtime.InteropServices.StructLayoutAttribute の引数 System.Runtime.InteropServices.CharSet によって決定されます。配列サイズを示す場合は、常に MarshalAsAttribute.SizeConst フィールド使用します。 

.NET FrameworkByValTStr 型は、構造体内の C スタイル固定サイズ文字列 (char s[5] など) と同様に機能しますマネージ コードでのこの動作は、Microsoft Visual Basic 6.0動作 (終端null でない。例 :MyString As String * 5) とは異なります

.NET Compact Framework によるサポートCurrency10 進値を Decimal ではなくCOM 通貨型としてマーシャリングするために、System.Decimal で使用します。 
.NET Compact Framework によるサポートCustomMarshalerMarshalAsAttribute.MarshalType または MarshalAsAttribute.MarshalTypeRef と共に使用する場合に、カスタム マーシャラ クラス指定します。MarshalAsAttribute.MarshalCookie フィールドは、カスタム マーシャラに追加情報を渡すために使用できます。このメンバ任意の参照型使用できます。 
.NET Compact Framework によるサポートErrorI4 または U4関連付けられたこのネイティブな型によって、パラメータエクスポート先のタイプ ライブラリに HRESULT としてエクスポートされます。 
.NET Compact Framework によるサポートFunctionPtrC スタイル関数ポインタとして使用できる整数値。このメンバは、Delegate データ型または Delegate から継承した型で使用できます。 
.NET Compact Framework によるサポートI11 バイト符号付き整数。このメンバ使用すると、Boolean 値を 1 バイトの C スタイル bool (true = 1、false = 0) に変換できます。 
.NET Compact Framework によるサポートI22 バイト符号付き整数。 
.NET Compact Framework によるサポートI44 バイト符号付き整数。 
.NET Compact Framework によるサポートI88 バイト符号付き整数。 
.NET Compact Framework によるサポートIDispatchCOMIDispatch ポインタ (Microsoft Visual Basic 6.0 では Object)。 
.NET Compact Framework によるサポートInterfaceCOM インターフェイス ポインタインターフェイスGuid は、クラス メタデータから取得しますインターフェイス型直接指定する場合、またはクラス適用する場合既定インターフェイス型指定する場合に、このメンバ使用します。このメンバは、Object データ型適用すると、UnmanagedType.IUnknown 動作生成します。 
.NET Compact Framework によるサポートIUnknownCOM IUnknown ポインタ。このメンバObject データ型使用できます。 
.NET Compact Framework によるサポートLPArrayC スタイル配列最初要素へのポインタマネージからアンマネージにマーシャリングする場合配列長はマネージ配列長によって決定されます。アンマネージからマネージマーシャリングする場合配列長さMarshalAsAttribute.SizeConst フィールドと MarshalAsAttribute.SizeParamIndex フィールドによって決まります文字列の型を区別する必要がある場合は、配列内の要素のアンマネージ型も考慮されます。 
.NET Compact Framework によるサポートLPStr終端null1 バイトANSI 文字列。このメンバは、System.String データ型または System.Text.StringBuilder データ型使用できます。 
.NET Compact Framework によるサポートLPStructマネージ書式指定クラスマーシャリングするときに使用する C スタイル構造体へのポインタプラットフォーム呼び出しメソッドでだけ有効です。 
.NET Compact Framework によるサポートLPTStrプラットフォーム依存する文字列Windows 98 では ANSIWindows NTWindows XP では Unicode。型 LPTStr文字列エクスポートサポートされていないため、この値は COM 相互運用ではサポートされず、プラットフォーム呼び出しだけでサポートされます。 
.NET Compact Framework によるサポートLPWStr終端null2 バイトUnicode 文字列。 

文字列がアンマネージ CoTaskMemAlloc 関数使用して作成されていない場合、アンマネージ文字列で LPWStr 値を使用することはできません。

.NET Compact Framework によるサポートR44 バイト浮動小数点数。 
.NET Compact Framework によるサポートR88 バイト浮動小数点数。 
.NET Compact Framework によるサポートSafeArraySafeArray は、関連付けられた配列データの型、ランク、および境界格納する自己記述型の配列です。MarshalAsAttribute.SafeArraySubType フィールド併せてこのメンバ使用することによって、既定要素の型をオーバーライドできます。 
.NET Compact Framework によるサポートStructマネージ書式指定クラス値型マーシャリングするために使用する VARIANT。 
.NET Compact Framework によるサポートSysIntプラットフォーム依存する符号付き整数32 ビット Windows では 4 バイト64 ビット Windows では 8 バイト。 
.NET Compact Framework によるサポートSysUIntプラットフォーム依存する符号なし整数32 ビット Windows では 4 バイト64 ビット Windows では 8 バイト。 
.NET Compact Framework によるサポートTBStr長さを示すプリフィックス付けたプラットフォーム依存する char 文字列Windows 98 では ANSIWindows NT では Unicode。この BSTR に似たメンバ使用することはほとんどありません。 
.NET Compact Framework によるサポートU11 バイト符号なし整数。 
.NET Compact Framework によるサポートU22 バイト符号なし整数。 
.NET Compact Framework によるサポートU44 バイト符号なし整数。 
.NET Compact Framework によるサポートU88 バイト符号なし整数。 
.NET Compact Framework によるサポートVariantBool2 バイトOLE 定義 VARIANT_BOOL 型 (true = -1、false = 0)。 
.NET Compact Framework によるサポートVBByRefStrVisual Basic 2005 で、アンマネージ コード文字列変更し結果マネージ コード反映できるようにします。この値は、プラットフォーム呼び出しでだけサポートされます。 
解説解説

System.Runtime.InteropServices.MarshalAsAttribute を設定した UnmanagedType 列挙体を使用してアンマネージ コードとの相互運用時に型をどのようにマーシャリングするかを指定します。この列挙体を使用すると、単純値型 (I1、I2、I4I8R4、R8、U2U4U8)、.NET Framework使用できないアンマネージ型などのさまざまな型使用してコードマーシャリングできます

詳細については、「アンマネージ コードとの相互運用」を参照してください

使用例使用例

次のコード片では、COM コンポーネントによって実装されるアンマネージ インターフェイスマネージ ソース コード宣言する方法示します。System.Runtime.InteropServices.ComImportAttribute は、IMyStorage インターフェイス逆にエクスポートされて COM から使用されることを防ぎます (COM クライアントは、既存COM コンポーネント直接使用する必要があります)。この例では、MarshalAsAttribute によって複数UnmanagedType メンバ指定されます。これらは、元の COM インターフェイス使用される型を表します

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)> 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
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;
        }
    }
}
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();
   }
};
import System.*;
import 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.
    /** @attribute ComImport()
     */
    /** @attribute Guid("73EB4AF8-BE9C-4b49-B3A4-24F4FF657B26")
     */
   public interface IMyStorage
   {
        /** @attribute DispId(1)
         */
        Object GetItem(
        /** @attribute In()
            @attribute MarshalAs(UnmanagedType.BStr)
         */String bstrName);
      
      
        /** @attribute DispId(2)
         */
        void GetItems(
        /** @attribute In()
            @attribute MarshalAs(UnmanagedType.BStr)
         */String bstrLocation,
        /** @attribute Out()
            @attribute MarshalAs(UnmanagedType.SafeArray, 
            SafeArraySubType = VarEnum.VT_VARIANT)
         */Object Items[]);
             
        /** @attribute DispId(3)
         */
        void GetItemDescriptions(
            /** @attribute In()
             */String bstrLocation,
            /** @attribute In()
                @attribute Out()
                @attribute MarshalAs(UnmanagedType.SafeArray)
             */Object varDescriptions[]);
               
        /** @attribute DispId(4)
         */
        /** @return MarshalAs(UnmanagedType.VariantBool)
         */
        boolean get_IsEmpty();
    } //IMyStorage
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
System.Runtime.InteropServices 名前空間
MarshalAsAttribute クラス
ComImportAttribute クラス


このページでは「.NET Framework クラス ライブラリ リファレンス」からUnmanagedType 列挙体を検索した結果を表示しています。
Weblioに収録されているすべての辞書からUnmanagedType 列挙体を検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からUnmanagedType 列挙体を検索

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「UnmanagedType 列挙体」の関連用語

UnmanagedType 列挙体のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



UnmanagedType 列挙体のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2024 Microsoft.All rights reserved.

©2024 GRAS Group, Inc.RSS