共用方式為


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 方法

列舉 ParamDef 語彙基元,表示指定之 MethodDef 語彙基元所參考方法的參數。

IMetaDataImport::EnumPermissionSets 方法

列舉指定之中繼資料範圍中物件的使用權限。

IMetaDataImport::EnumProperties 方法

列舉 PropertyDef 語彙基元,表示指定之 TypeDef 語彙基元所參考型別的屬性。

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 方法

針對指定之事件語彙基元所表示的事件,取得中繼資料資訊,包括宣告型別、委派的加入和移除方法,以及任何旗標和其他相關資料。

IMetaDataImport::GetFieldMarshal 方法

取得一個指向由特定欄位中繼資料語彙基元所表示的原生、Unmanaged 型別欄位的指標。

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 方法

在目前的中繼資料範圍內取得組件或模組的名稱,和選擇性取得其版本識別項。

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

其他資源

中繼資料介面

中繼資料概觀