更新 : 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
);
};
メソッド
メソッド |
説明 |
---|---|
指定したハンドルを持つ列挙子を閉じます。 |
|
指定されたハンドルを持つ列挙子の要素の数を取得します。 |
|
指定した型またはメンバに関連付けられているカスタム属性定義トークンのリストを列挙します。 |
|
指定した TypeDef トークンのイベント定義トークンを列挙します。 |
|
指定した TypeDef トークンによって参照される型の FieldDef トークンを列挙します。 |
|
指定した名前を持つ指定した型の FieldDef トークンを列挙します。 |
|
インターフェイス実装を表す MethodDef トークンを列挙します。 |
|
指定した型のメンバを表す MemberRef トークンを列挙します。 |
|
指定した型のメンバを表す MemberDef トークンを列挙します。 |
|
指定した名前を持つ指定した型のメンバを表す MemberDef トークンを列挙します。 |
|
指定した型のメソッドを表す MethodBody トークンと MethodDeclaration トークンを列挙します。 |
|
指定した型のメソッドを表す MethodDef トークンを列挙します。 |
|
指定したメソッドが関連付けられているプロパティおよびプロパティ変更イベントを列挙します。 |
|
指定した名前を持ち、指定した TypeDef トークンによって参照される型で定義されるメソッドを列挙します。 |
|
インポートされたモジュールを表す ModuleRef トークンを列挙します。 |
|
指定した MethodDef トークンによって参照されるメソッドのパラメータを表す ParamDef トークンを列挙します。 |
|
指定したメタデータ スコープ内のオブジェクトのアクセス許可を列挙します。 |
|
指定した TypeDef トークンによって参照される型のプロパティを表す PropertyDef トークンを列挙します。 |
|
現在のスコープ内のスタンドアロン シグネチャを表す Signature トークンを列挙します。 |
|
現在のスコープ内のすべての型を表す TypeDef トークンを列挙します。 |
|
現在のメタデータ スコープ内で定義される TypeRef トークンを列挙します。 |
|
現在のメタデータ スコープ内で定義される TypeSpec トークンを列挙します。 |
|
現在のメタデータ スコープ内にある未解決のメソッドを表す MemberDef トークンを列挙します。 |
|
現在のメタデータ スコープ内にあるハードコーディングされた文字列を表す String トークンを列挙します。 |
|
指定した型のメンバであり、さらに指定した名前とメタデータ シグネチャを持つフィールドの FieldDef トークンを取得します。 |
|
指定した名前とメタデータ シグネチャを持ち、指定した型で定義されるメンバの MemberDef トークンへのポインタを取得します。 |
|
指定した名前とメタデータ シグネチャを持ち、指定した型で定義されるメンバの MemberRef トークンへのポインタを取得します。 |
|
指定した名前とメタデータ シグネチャを持ち、指定した型で定義されるメソッドの MethodDef トークンへのポインタを取得します。 |
|
指定した名前の型の TypeDef メタデータ トークンへのポインタを取得します。 |
|
指定した検索スコープ内にある、指定した名前の型を参照する TypeRef メタデータ トークンへのポインタを取得します。 |
|
指定した TypeDef トークンによって参照されるクラスのレイアウト情報を取得します。 |
|
指定した名前のカスタム属性の値を取得します。 |
|
指定したメタデータ トークンのカスタム属性の値を取得します。 |
|
指定したイベント トークンによって表されるイベントのメタデータ情報を取得します。この情報には、宣言型、デリゲートの add メソッドおよび remove メソッド、任意のフラグ データとその他の関連付けられているデータなどがあります。 |
|
指定した Field メタデータ トークンによって表されるフィールドのネイティブなアンマネージ型へのポインタを取得します。 |
|
指定した FieldDef トークンによって参照されるフィールドに関連付けられているメタデータを取得します。 |
|
指定したメソッドを実装する型、およびそのメソッドを宣言するインターフェイスのメタデータ トークンへのポインタを取得します。 |
|
指定したメタデータ トークンによって参照される型メンバのメタデータ情報 (名前、バイナリ シグネチャ、相対仮想アドレスなど) を取得します。 |
|
指定したトークンによって参照されるメンバに関連付けられているメタデータを取得します。 |
|
指定した MethodDef トークンによって参照されるメソッドに関連付けられているメタデータを取得します。 |
|
指定した MethodDef トークンによって参照されるメソッドと、指定した EventProp トークンによって参照されるプロパティとイベントのペアとの間の関係へのポインタを取得します。 |
|
現在のメタデータ スコープ内で参照されるモジュールのメタデータ トークンへのポインタを取得します。 |
|
指定したメタデータ トークンが参照するモジュールの名前を取得します。 |
|
指定したメタデータ トークンによって参照されるオブジェクトの UTF-8 名を取得します。 |
|
指定したシグネチャ ポインタで表されるメソッドのネイティブな呼び出し規約を取得します。 |
|
入れ子にされた型を指定して、それを囲んでいる親の型の TypeDef トークンを取得します。 |
|
指定した MethodDef トークンが表すメソッドの一連のメソッド パラメータにおいて、指定した序数位置にあるパラメータを表すトークンへのポインタを取得します。 |
|
指定した ParamDef トークンによって参照されるパラメータのメタデータ値を取得します。 |
|
指定した Permission トークンが表す System.Security.PermissionSet に関連付けられているメタデータを取得します。 |
|
PInvoke 呼び出しの対象アセンブリを表す ModuleRef トークンを取得します。 |
|
指定したトークンが表すプロパティに関連付けられているメタデータを取得します。 |
|
指定したトークンが表すコード オブジェクトの相対仮想アドレスのオフセットを取得します。 |
|
現在のメタデータ スコープのアセンブリまたはモジュールの名前、およびオプションでバージョン ID を取得します。 |
|
指定したトークンに関連付けられているバイナリ メタデータ シグネチャを取得します。 |
|
指定した TypeDef トークンによって表される型のメタデータ情報を返します。 |
|
指定した TypeRef トークンによって参照される型に関連付けられているメタデータを取得します。 |
|
指定したトークンが表すタイプ仕様のバイナリ メタデータ シグネチャを取得します。 |
|
指定したメタデータ トークンで表されるリテラル文字列を取得します。 |
|
指定したメタデータ トークンによって表されるフィールド、メソッド、または型がグローバル スコープを保持しているかどうかを示す値を取得します。 |
|
指定したトークンが、コード オブジェクトへの有効な参照を保持しているかどうかを示す値を取得します。 |
|
指定した列挙子を指定した位置にリセットします。 |
|
指定した 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