次の方法で共有


IMetaDataImport

更新 : 2007 年 11 月

ポータブル実行可能 (PE) ファイルまたはその他のソース (タイプ ライブラリ、スタンドアロンのランタイム メタデータ バイナリなど) から既存のメタデータをインポートおよび操作するメソッドを提供します。

interface IMetaDataImport : IUnknown {
        
    HRESULT CloseEnum (
        HCORENUM hEnum
    );
        
    HRESULT CountEnum (
        HCORENUM    hEnum, 
        ULONG       *pulCount
    );
        
    HRESULT EnumCustomAttributes ( 
        HCORENUM    *phEnum,
        mdToken     tk, 
        mdToken     tkType, 
        mdCustomAttribute rCustomAttributes[], 
        ULONG       cMax,
        ULONG       *pcCustomAttributes
    );
        
    HRESULT EnumEvents ( 
        HCORENUM    *phEnum, 
        mdTypeDef   td, 
        mdEvent     rEvents[], 
        ULONG       cMax,
        ULONG       *pcEvents
    );
        
    HRESULT EnumFields ( 
        HCORENUM    *phEnum, 
        mdTypeDef   cl, 
        mdFieldDef  rFields[], 
        ULONG       cMax, 
        ULONG       *pcTokens
    );
        
    HRESULT EnumFieldsWithName (
        HCORENUM    *phEnum, 
        mdTypeDef   cl, 
        LPCWSTR     szName, 
        mdFieldDef  rFields[], 
        ULONG       cMax, 
        ULONG       *pcTokens 
    );
        
    HRESULT EnumInterfaceImpls (
        HCORENUM        *phEnum, 
        mdTypeDef       td,
        mdInterfaceImpl rImpls[], 
        ULONG           cMax,
        ULONG*          pcImpls
    );
        
    HRESULT EnumMemberRefs (
        HCORENUM    *phEnum, 
        mdToken     tkParent, 
        mdMemberRef rMemberRefs[], 
        ULONG       cMax, 
        ULONG       *pcTokens
    );
        
    HRESULT EnumMembers ( 
        HCORENUM    *phEnum, 
        mdTypeDef   cl, 
        mdToken     rMembers[], 
        ULONG       cMax, 
        ULONG       *pcTokens
    );
        
    HRESULT EnumMembersWithName (
        HCORENUM    *phEnum, 
        mdTypeDef   cl, 
        LPCWSTR     szName, 
        mdToken     rMembers[], 
        ULONG       cMax, 
        ULONG       *pcTokens
    );
        
    HRESULT EnumMethodImpls (
        HCORENUM    *phEnum, 
        mdTypeDef   td, 
        mdToken     rMethodBody[], 
        mdToken     rMethodDecl[], 
        ULONG       cMax, 
        ULONG       *pcTokens
    );
        
    HRESULT EnumMethods (
        HCORENUM    *phEnum, 
        mdTypeDef   cl, 
        mdMethodDef rMethods[], 
        ULONG       cMax, 
        ULONG       *pcTokens
    );
        
    HRESULT EnumMethodSemantics (
        HCORENUM    *phEnum,
        mdMethodDef mb, 
        mdToken     rEventProp[], 
        ULONG       cMax,
        ULONG       *pcEventProp
    );
        
    HRESULT EnumMethodsWithName (
        HCORENUM    *phEnum,
        mdTypeDef   cl,
        LPCWSTR     szName,
        mdMethodDef rMethods[],
        ULONG       cMax,
        ULONG       *pcTokens
    );
        
    HRESULT EnumModuleRefs (
        HCORENUM    *phEnum,
        mdModuleRef rModuleRefs[],
        ULONG       cMax,
        ULONG       *pcModuleRefs
    );
        
    HRESULT EnumParams (
        HCORENUM    *phEnum,
        mdMethodDef mb,
        mdParamDef  rParams[],
        ULONG       cMax,
        ULONG       *pcTokens
    );
        
    HRESULT EnumPermissionSets
        HCORENUM    *phEnum, 
        mdToken     tk, 
        DWORD       dwActions,
        mdPermission rPermission[],
        ULONG       cMax,
       ULONG       *pcTokens
    );
        
    HRESULT EnumProperties (
        HCORENUM    *phEnum,
        mdTypeDef   td,
        mdProperty  rProperties[],
        ULONG       cMax,
        ULONG       *pcProperties
    );
        
    HRESULT EnumSignatures (
        HCORENUM    *phEnum,
        mdSignature rSignatures[],
        ULONG       cMax,
        ULONG       *pcSignatures
    );
        
    HRESULT EnumTypeDefs (
        HCORENUM    *phEnum, 
        mdTypeDef   rTypeDefs[],
        ULONG       cMax, 
        ULONG       *pcTypeDefs
    );
        
    HRESULT EnumTypeRefs (
        HCORENUM    *phEnum, 
        mdTypeRef   rTypeRefs[],
        ULONG       cMax, 
        ULONG       *pcTypeRefs
    );
        
    HRESULT EnumTypeSpecs (
        HCORENUM    *phEnum,
        mdTypeSpec  rTypeSpecs[],
        ULONG       cMax,
        ULONG       *pcTypeSpecs
    );
        
    HRESULT EnumUnresolvedMethods (
        HCORENUM    *phEnum,
        mdToken     rMethods[],
        ULONG       cMax,
        ULONG       *pcTokens
        );
        
    HRESULT EnumUserStrings (
        HCORENUM    *phEnum,
        mdString    rStrings[],
                ULONG       cMax,
        ULONG       *pcStrings
    );
        
    HRESULT FindField (
        mdTypeDef   td,
        LPCWSTR     szName,
        PCCOR_SIGNATURE pvSigBlob,
        ULONG       cbSigBlob,
        mdFieldDef  *pmb
    );
        
    HRESULT FindMember (
        mdTypeDef   td,
        LPCWSTR     szName, 
        PCCOR_SIGNATURE pvSigBlob, 
        ULONG       cbSigBlob, 
        mdToken     *pmb
    );
        
    HRESULT FindMemberRef (
        mdTypeRef   td,
        LPCWSTR     szName, 
        PCCOR_SIGNATURE pvSigBlob, 
        ULONG       cbSigBlob, 
        mdMemberRef     *pmr
    );
        
    HRESULT FindMethod (
        mdTypeDef   td,
        LPCWSTR     szName, 
        PCCOR_SIGNATURE pvSigBlob, 
        ULONG       cbSigBlob, 
        mdMethodDef     *pmb
    );
        
    HRESULT FindTypeDefByName
        LPCWSTR     szTypeDef,
        mdToken     tkEnclosingClass,
        mdTypeDef   *ptd
    );
        
    HRESULT FindTypeRef (
        mdToken     tkResolutionScope,
        LPCWSTR     szName,
        mdTypeRef   *ptr
    );
        
    HRESULT GetClassLayout ( 
        mdTypeDef   td, 
        DWORD       *pdwPackSize,
        COR_FIELD_OFFSET rFieldOffset[],
        ULONG       cMax,
        ULONG       *pcFieldOffset,
        ULONG       *pulClassSize
    );
        
    HRESULT GetCustomAttributeByName (
        mdToken     tkObj,
        LPCWSTR     szName,
        const void  **ppData,
        ULONG       *pcbData
    );
        
    HRESULT GetCustomAttributeProps (
        mdCustomAttribute cv,
        mdToken     *ptkObj,
        mdToken     *ptkType,
        void const  **ppBlob,
        ULONG       *pcbSize
    );
        
    HRESULT GetEventProps (
        mdEvent     ev,
        mdTypeDef   *pClass, 
        LPCWSTR     szEvent, 
        ULONG       cchEvent, 
        ULONG       *pchEvent, 
        DWORD       *pdwEventFlags,
        mdToken     *ptkEventType,
        mdMethodDef *pmdAddOn, 
        mdMethodDef *pmdRemoveOn, 
        mdMethodDef *pmdFire, 
        mdMethodDef rmdOtherMethod[], 
        ULONG       cMax,
        ULONG       *pcOtherMethod
    );
        
    HRESULT GetFieldMarshal (
        mdToken     tk, 
        PCCOR_SIGNATURE *ppvNativeType,
        ULONG       *pcbNativeType 
    );
        
    HRESULT GetFieldProps (
        mdFieldDef  mb, 
        mdTypeDef   *pClass,
        LPWSTR      szField,
        ULONG       cchField, 
        ULONG       *pchField,
        DWORD       *pdwAttr,
        PCCOR_SIGNATURE *ppvSigBlob, 
        ULONG       *pcbSigBlob, 
        DWORD       *pdwCPlusTypeFlag, 
        UVCP_CONSTANT *ppValue,
        ULONG       *pcchValue
    );
        
    HRESULT GetInterfaceImplProps (
        mdInterfaceImpl iiImpl,
        mdTypeDef   *pClass,
        mdToken     *ptkIface)
    );
        
    HRESULT GetMemberProps (
        mdToken     mb, 
        mdTypeDef   *pClass,
        LPWSTR      szMember, 
        ULONG       cchMember, 
        ULONG       *pchMember, 
        DWORD       *pdwAttr,
        PCCOR_SIGNATURE *ppvSigBlob, 
        ULONG       *pcbSigBlob, 
        ULONG       *pulCodeRVA, 
        DWORD       *pdwImplFlags, 
        DWORD       *pdwCPlusTypeFlag, 
        UVCP_CONSTANT *ppValue,
        ULONG       *pcchValue
    );

    HRESULT GetMemberRefProps (
        mdMemberRef mr, 
        mdToken     *ptk, 
        LPWSTR      szMember, 
        ULONG       cchMember, 
        ULONG       *pchMember, 
        PCCOR_SIGNATURE *ppvSigBlob, 
        ULONG       *pbSig 
    );

    HRESULT GetMethodProps (
        mdMethodDef mb, 
        mdTypeDef   *pClass, 
        LPWSTR      szMethod, 
        ULONG       cchMethod, 
        ULONG       *pchMethod,
        DWORD       *pdwAttr, 
        PCCOR_SIGNATURE *ppvSigBlob, 
        ULONG       *pcbSigBlob, 
        ULONG       *pulCodeRVA, 
        DWORD       *pdwImplFlags
    );
        
    HRESULT GetMethodSemantics (
        mdMethodDef mb,
        mdToken     tkEventProp,
        DWORD       *pdwSemanticsFlags
    );
                
    HRESULT GetModuleFromScope (
        mdModule    *pmd
    );
        
    HRESULT GetModuleRefProps (
        mdModuleRef mur,
        LPWSTR      szName, 
        ULONG       cchName, 
        ULONG       *pchName 
    );
        
    HRESULT GetNameFromToken (
        mdToken     tk,
        MDUTF8CSTR  *pszUtf8NamePtr
    );
        
    HRESULT GetNativeCallConvFromSig (
        void const  *pvSig,
        ULONG       cbSig,
        ULONG       *pCallConv
    );
        
    HRESULT GetNestedClassProps (
        mdTypeDef   tdNestedClass,
        mdTypeDef   *ptdEnclosingClass
    );
        
    HRESULT GetParamForMethodIndex (
        mdMethodDef md,
        ULONG       ulParamSeq,
        mdParamDef  *ppd
    );

    HRESULT GetParamProps (
        mdParamDef  tk,
        mdMethodDef *pmd,
        ULONG       *pulSequence,
        LPWSTR      szName,
        ULONG       cchName,
        ULONG       *pchName,
        DWORD       *pdwAttr,
        DWORD       *pdwCPlusTypeFlag,
        UVCP_CONSTANT *ppValue,
        ULONG       *pcchValue
    );
        
    HRESULT GetPermissionSetProps (
        mdPermission pm,
        DWORD       *pdwAction, 
        void const  **ppvPermission, 
        ULONG       *pcbPermission
    );
        
    HRESULT GetPinvokeMap (
        mdToken     tk,
        DWORD       *pdwMappingFlags,
        LPWSTR      szImportName,
        ULONG       cchImportName,
        ULONG       *pchImportName,
        mdModuleRef *pmrImportDLL
    );
        
    HRESULT GetPropertyProps (
        mdProperty  prop,
        mdTypeDef   *pClass, 
        LPCWSTR     szProperty, 
        ULONG       cchProperty, 
        ULONG       *pchProperty, 
        DWORD       *pdwPropFlags, 
        PCCOR_SIGNATURE *ppvSig, 
        ULONG       *pbSig, 
        DWORD       *pdwCPlusTypeFlag, 
        UVCP_CONSTANT *ppDefaultValue,
        ULONG       *pcchDefaultValue,
        mdMethodDef *pmdSetter, 
        mdMethodDef *pmdGetter, 
        mdMethodDef rmdOtherMethod[],
        ULONG       cMax, 
        ULONG       *pcOtherMethod 
    );
        
    HRESULT GetRVA (
        mdToken     tk, 
        ULONG       *pulCodeRVA, 
        DWORD       *pdwImplFlags
    );
        
    HRESULT GetScopeProps (
        LPWSTR      szName,
        ULONG       cchName,
        ULONG       *pchName,
        GUID        *pmvid
    );
        
    HRESULT GetSigFromToken ( 
        mdSignature mdSig, 
        PCCOR_SIGNATURE *ppvSig, 
        ULONG       *pcbSig 
    );
        
    HRESULT GetTypeDefProps 
        mdTypeDef   td,
        LPWSTR      szTypeDef,
        ULONG       cchTypeDef,
        ULONG       *pchTypeDef,
        DWORD       *pdwTypeDefFlags,
        mdToken     *ptkExtends
    );
        
    HRESULT GetTypeRefProps (
        mdTypeRef   tr,
        mdToken     *ptkResolutionScope,
        LPWSTR      szName,
        ULONG       cchName,
        ULONG       *pchName
    );
        
    HRESULT GetTypeSpecFromToken ( 
        mdTypeSpec  typespec, 
        PCCOR_SIGNATURE *ppvSig, 
        ULONG       *pcbSig
    );
        
    HRESULT GetUserString (
        mdString    stk,
        LPWSTR      szString,
        ULONG       cchString,
        ULONG       *pchString
    );
        
    HRESULT IsGlobal (
        mdToken     pd,
        int         *pbGlobal
    );
        
    BOOL IsValidToken (
        mdToken     tk
    );

    HRESULT ResetEnum (
        HCORENUM    hEnum, 
        ULONG       ulPos
    );
        
    HRESULT ResolveTypeRef (
        mdTypeRef   tr,
        REFIID      riid,
        IUnknown    **ppIScope,
        mdTypeDef   *ptd
    );
        
};

メソッド

メソッド

説明

IMetaDataImport::CloseEnum メソッド

指定したハンドルを持つ列挙子を閉じます。

IMetaDataImport::CountEnum メソッド

指定されたハンドルを持つ列挙子の要素の数を取得します。

IMetaDataImport::EnumCustomAttributes メソッド

指定した型またはメンバに関連付けられているカスタム属性定義トークンのリストを列挙します。

IMetaDataImport::EnumEvents メソッド

指定した TypeDef トークンのイベント定義トークンを列挙します。

IMetaDataImport::EnumFields メソッド

指定した TypeDef トークンによって参照される型の FieldDef トークンを列挙します。

IMetaDataImport::EnumFieldsWithName メソッド

指定した名前を持つ指定した型の FieldDef トークンを列挙します。

IMetaDataImport::EnumInterfaceImpls メソッド

インターフェイス実装を表す MethodDef トークンを列挙します。

IMetaDataImport::EnumMemberRefs メソッド

指定した型のメンバを表す MemberRef トークンを列挙します。

IMetaDataImport::EnumMembers メソッド

指定した型のメンバを表す MemberDef トークンを列挙します。

IMetaDataImport::EnumMembersWithName メソッド

指定した名前を持つ指定した型のメンバを表す MemberDef トークンを列挙します。

IMetaDataImport::EnumMethodImpls メソッド

指定した型のメソッドを表す MethodBody トークンと MethodDeclaration トークンを列挙します。

IMetaDataImport::EnumMethods メソッド

指定した型のメソッドを表す MethodDef トークンを列挙します。

IMetaDataImport::EnumMethodSemantics メソッド

指定したメソッドが関連付けられているプロパティおよびプロパティ変更イベントを列挙します。

IMetaDataImport::EnumMethodsWithName メソッド

指定した名前を持ち、指定した TypeDef トークンによって参照される型で定義されるメソッドを列挙します。

IMetaDataImport::EnumModuleRefs メソッド

インポートされたモジュールを表す ModuleRef トークンを列挙します。

IMetaDataImport::EnumParams メソッド

指定した MethodDef トークンによって参照されるメソッドのパラメータを表す ParamDef トークンを列挙します。

IMetaDataImport::EnumPermissionSets メソッド

指定したメタデータ スコープ内のオブジェクトのアクセス許可を列挙します。

IMetaDataImport::EnumProperties メソッド

指定した TypeDef トークンによって参照される型のプロパティを表す PropertyDef トークンを列挙します。

IMetaDataImport::EnumSignatures メソッド

現在のスコープ内のスタンドアロン シグネチャを表す Signature トークンを列挙します。

IMetaDataImport::EnumTypeDefs メソッド

現在のスコープ内のすべての型を表す TypeDef トークンを列挙します。

IMetaDataImport::EnumTypeRefs メソッド

現在のメタデータ スコープ内で定義される TypeRef トークンを列挙します。

IMetaDataImport::EnumTypeSpecs メソッド

現在のメタデータ スコープ内で定義される TypeSpec トークンを列挙します。

IMetaDataImport::EnumUnresolvedMethods メソッド

現在のメタデータ スコープ内にある未解決のメソッドを表す MemberDef トークンを列挙します。

IMetaDataImport::EnumUserStrings メソッド

現在のメタデータ スコープ内にあるハードコーディングされた文字列を表す String トークンを列挙します。

IMetaDataImport::FindField メソッド

指定した型のメンバであり、さらに指定した名前とメタデータ シグネチャを持つフィールドの FieldDef トークンを取得します。

IMetaDataImport::FindMember メソッド

指定した名前とメタデータ シグネチャを持ち、指定した型で定義されるメンバの MemberDef トークンへのポインタを取得します。

IMetaDataImport::FindMemberRef メソッド

指定した名前とメタデータ シグネチャを持ち、指定した型で定義されるメンバの MemberRef トークンへのポインタを取得します。

IMetaDataImport::FindMethod メソッド

指定した名前とメタデータ シグネチャを持ち、指定した型で定義されるメソッドの MethodDef トークンへのポインタを取得します。

IMetaDataImport::FindTypeDefByName メソッド

指定した名前の型の TypeDef メタデータ トークンへのポインタを取得します。

IMetaDataImport::FindTypeRef メソッド

指定した検索スコープ内にある、指定した名前の型を参照する TypeRef メタデータ トークンへのポインタを取得します。

IMetaDataImport::GetClassLayout メソッド

指定した TypeDef トークンによって参照されるクラスのレイアウト情報を取得します。

IMetaDataImport::GetCustomAttributeByName メソッド

指定した名前のカスタム属性の値を取得します。

IMetaDataImport::GetCustomAttributeProps メソッド

指定したメタデータ トークンのカスタム属性の値を取得します。

IMetaDataImport::GetEventProps メソッド

指定したイベント トークンによって表されるイベントのメタデータ情報を取得します。この情報には、宣言型、デリゲートの add メソッドおよび remove メソッド、任意のフラグ データとその他の関連付けられているデータなどがあります。

IMetaDataImport::GetFieldMarshal メソッド

指定した Field メタデータ トークンによって表されるフィールドのネイティブなアンマネージ型へのポインタを取得します。

IMetaDataImport::GetFieldProps メソッド

指定した FieldDef トークンによって参照されるフィールドに関連付けられているメタデータを取得します。

IMetaDataImport::GetInterfaceImplProps メソッド

指定したメソッドを実装する型、およびそのメソッドを宣言するインターフェイスのメタデータ トークンへのポインタを取得します。

IMetaDataImport::GetMemberProps メソッド

指定したメタデータ トークンによって参照される型メンバのメタデータ情報 (名前、バイナリ シグネチャ、相対仮想アドレスなど) を取得します。

IMetaDataImport::GetMemberRefProps メソッド

指定したトークンによって参照されるメンバに関連付けられているメタデータを取得します。

IMetaDataImport::GetMethodProps メソッド

指定した MethodDef トークンによって参照されるメソッドに関連付けられているメタデータを取得します。

IMetaDataImport::GetMethodSemantics メソッド

指定した MethodDef トークンによって参照されるメソッドと、指定した EventProp トークンによって参照されるプロパティとイベントのペアとの間の関係へのポインタを取得します。

IMetaDataImport::GetModuleFromScope メソッド

現在のメタデータ スコープ内で参照されるモジュールのメタデータ トークンへのポインタを取得します。

IMetaDataImport::GetModuleRefProps メソッド

指定したメタデータ トークンが参照するモジュールの名前を取得します。

IMetaDataImport::GetNameFromToken メソッド

指定したメタデータ トークンによって参照されるオブジェクトの UTF-8 名を取得します。

IMetaDataImport::GetNativeCallConvFromSig メソッド

指定したシグネチャ ポインタで表されるメソッドのネイティブな呼び出し規約を取得します。

IMetaDataImport::GetNestedClassProps メソッド

入れ子にされた型を指定して、それを囲んでいる親の型の TypeDef トークンを取得します。

IMetaDataImport::GetParamForMethodIndex メソッド

指定した MethodDef トークンが表すメソッドの一連のメソッド パラメータにおいて、指定した序数位置にあるパラメータを表すトークンへのポインタを取得します。

IMetaDataImport::GetParamProps メソッド

指定した ParamDef トークンによって参照されるパラメータのメタデータ値を取得します。

IMetaDataImport::GetPermissionSetProps メソッド

指定した Permission トークンが表す System.Security.PermissionSet に関連付けられているメタデータを取得します。

IMetaDataImport::GetPinvokeMap メソッド

PInvoke 呼び出しの対象アセンブリを表す ModuleRef トークンを取得します。

IMetaDataImport::GetPropertyProps メソッド

指定したトークンが表すプロパティに関連付けられているメタデータを取得します。

IMetaDataImport::GetRVA メソッド

指定したトークンが表すコード オブジェクトの相対仮想アドレスのオフセットを取得します。

IMetaDataImport::GetScopeProps メソッド

現在のメタデータ スコープのアセンブリまたはモジュールの名前、およびオプションでバージョン ID を取得します。

IMetaDataImport::GetSigFromToken メソッド

指定したトークンに関連付けられているバイナリ メタデータ シグネチャを取得します。

IMetaDataImport::GetTypeDefProps メソッド

指定した TypeDef トークンによって表される型のメタデータ情報を返します。

IMetaDataImport::GetTypeRefProps メソッド

指定した TypeRef トークンによって参照される型に関連付けられているメタデータを取得します。

IMetaDataImport::GetTypeSpecFromToken メソッド

指定したトークンが表すタイプ仕様のバイナリ メタデータ シグネチャを取得します。

IMetaDataImport::GetUserString メソッド

指定したメタデータ トークンで表されるリテラル文字列を取得します。

IMetaDataImport::IsGlobal メソッド

指定したメタデータ トークンによって表されるフィールド、メソッド、または型がグローバル スコープを保持しているかどうかを示す値を取得します。

IMetaDataImport::IsValidToken メソッド

指定したトークンが、コード オブジェクトへの有効な参照を保持しているかどうかを示す値を取得します。

IMetaDataImport::ResetEnum メソッド

指定した列挙子を指定した位置にリセットします。

IMetaDataImport::ResolveTypeRef メソッド

指定した TypeRef トークンによって参照される型の型情報を取得します。

解説

IMetaDataImport インターフェイスは、型情報 (開発ツールなど) のインポート、または配置されたコンポーネント (解決サービス、アクティブ化サービスなど) の管理を行うツールとサービスで使用することを主な目的としてデザインされています。IMetaDataImport のメソッドは、次のタスク カテゴリに分類されます。

  • メタデータ スコープ内の項目のコレクションの列挙。

  • 特定の特性セットを持つ項目の検索。

  • 指定した項目のプロパティの取得。

  • Get メソッドは、メタデータ項目の単一値のプロパティを返すように特別にデザインされています。プロパティが別の項目への参照である場合、その項目のトークンが返されます。特定の値が要求されていないことを示すために、ポインタ入力型を NULL に設定できます。基本的にコレクション オブジェクトであるプロパティ (クラスが実装するインターフェイスのコレクションなど) を取得するには、列挙メソッドを使用します。

必要条件

プラットフォーム : 「.NET Framework システム要件」を参照

ヘッダー : Cor.h

ライブラリ : MsCorEE.dll でリソースとして使用されていること

.NET Framework のバージョン : 3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0

参照

参照

IMetaDataImport2

その他の技術情報

メタデータ インターフェイス

メタデータの概要