IMetaDataImport
Mise à jour : novembre 2007
Fournit des méthodes pour importer et manipuler les métadonnées existantes à partir d'un fichier exécutable portable (PE) ou d'une autre source, telles que les métadonnées binaires de bibliothèque de types ou les métadonnées binaires autonomes de runtime.
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
);
};
Méthodes
Méthode |
Description |
---|---|
Ferme l'énumérateur avec le handle spécifié. |
|
Obtient le nombre d'éléments dans l'énumérateur avec le handle spécifié. |
|
Énumère une liste de jetons de définition d'attributs personnalisés associée au type ou membre spécifié. |
|
Énumère des jetons de définition d'événements pour le jeton TypeDef spécifié. |
|
Énumère des jetons FieldDef pour le type référencé par le jeton TypeDef spécifié. |
|
Énumère des jetons FieldDef du type spécifié avec le nom spécifié. |
|
Énumère des jetons MethodDef qui représentent des implémentations d'interface. |
|
Énumère des jetons MemberRef qui représentent des membres du type spécifié. |
|
Énumère des jetons MemberDef qui représentent des membres du type spécifié. |
|
Énumère des jetons MemberDef qui représentent des membres du type spécifié avec le nom spécifié. |
|
Énumère des jetons MethodBody et MethodDeclaration qui représentent des méthodes du type spécifié. |
|
Énumère des jetons MethodDef qui représentent des méthodes du type spécifié. |
|
Énumère les propriétés et les événements de modification de propriété auxquels la méthode spécifiée est associée. |
|
Énumère les méthodes ayant le nom spécifié et définies par le type référencé par le jeton TypeDef spécifié. |
|
Énumère des jetons ModuleRef qui représentent des modules importés. |
|
Énumère des jetons ParamDef qui représentent les paramètres de la méthode référencée par le jeton MethodDef spécifié. |
|
Énumère les autorisations pour les objets dans une portée de métadonnées spécifiée. |
|
Énumère des jetons PropertyDef qui représentent les propriétés du type référencé par le jeton TypeDef spécifié. |
|
Énumère des jetons Signature qui représentent des signatures autonomes dans la portée actuelle. |
|
Énumère des jetons TypeDef qui représentent tous les types dans la portée actuelle. |
|
Énumère des jetons TypeRef définis dans la portée de métadonnées actuelle. |
|
Énumère des jetons TypeSpec définis dans la portée de métadonnées actuelle. |
|
Énumère des jetons MemberDef qui représentent les méthodes non résolues dans la portée de métadonnées actuelle. |
|
Énumère des jetons String qui représentent des chaînes codées en dur dans la portée de métadonnées actuelle. |
|
Obtient le jeton FieldDef pour le champ qui est un membre du type spécifié et possède le nom et la signature de métadonnées spécifiés. |
|
Obtient un pointeur vers le jeton MemberDef pour le membre défini par le type spécifié, qui porte le nom et la signature de métadonnées spécifiés. |
|
Obtient un pointeur vers le jeton MemberRef pour le membre défini par le type spécifié, qui porte le nom et la signature de métadonnées spécifiés. |
|
Obtient un pointeur vers le jeton MethodDef pour la méthode définie par le type spécifié, qui porte le nom et la signature de métadonnées spécifiés. |
|
Obtient un pointeur vers le jeton de métadonnées TypeDef pour le type avec le nom spécifié. |
|
Obtient un pointeur vers le jeton de métadonnées TypeRef qui référence le type dans la portée de recherche spécifiée avec le nom spécifié. |
|
Obtient les informations de disposition pour la classe référencée par le jeton TypeDef spécifié. |
|
Obtient la valeur de l'attribut personnalisé, d'après son nom. |
|
Obtient la valeur de l'attribut personnalisé, d'après son jeton de métadonnées. |
|
Obtient les informations de métadonnées (notamment le type déclarant, les méthodes add et remove pour les délégués, et les indicateurs et autres données associées) pour l'événement représenté par le jeton d'événement spécifié. |
|
Obtient un pointeur vers le type natif non managé du champ représenté par le jeton de métadonnées de champ spécifié. |
|
Obtient les métadonnées associées au champ référencé par le jeton FieldDef spécifié. |
|
Obtient un pointeur vers les jetons de métadonnées pour le type qui implémente la méthode spécifiée, et l'interface qui déclare cette méthode. |
|
Obtient les informations de métadonnées (y compris le nom, la signature binaire et l'adresse virtuelle relative) du membre de type référencé par le jeton de métadonnées spécifié. |
|
Obtient les métadonnées associées au membre référencé par le jeton spécifié. |
|
Obtient les métadonnées associées à la méthode référencée par le jeton MethodDef spécifié. |
|
Obtient un pointeur vers la relation entre la méthode référencée par le jeton MethodDef spécifié et la propriété et l'événement associés référencés par le jeton EventProp spécifié. |
|
Obtient un pointeur vers le jeton de métadonnées pour le module référencé dans la portée de métadonnées actuelle. |
|
Obtient le nom du module référencé par le jeton de métadonnées spécifié. |
|
Obtient le nom UTF-8 de l'objet référencé par le jeton de métadonnées spécifié. |
|
Reçoit la convention d'appel native pour la méthode qui est représentée par le pointeur de signature spécifié. |
|
Obtient le jeton TypeDef pour le type parent englobant du type imbriqué spécifié. |
|
Obtient un pointeur vers le jeton qui représente le paramètre à la position ordinale spécifiée dans la séquence de paramètres de méthode pour la méthode représentée par le jeton MethodDef spécifié. |
|
Obtient des valeurs de métadonnées pour le paramètre référencé par le jeton ParamDef spécifié. |
|
Obtient les métadonnées associées à System.Security.PermissionSet représenté par le jeton d'autorisations spécifié. |
|
Obtient qu'un jeton ModuleRef représente l'assembly cible d'un appel PInvoke. |
|
Obtient les métadonnées associées à la propriété représentée par le jeton spécifié. |
|
Obtient l'offset de l'adresse virtuelle relative de l'objet de code représenté par le jeton spécifié. |
|
Obtient le nom et, facultativement, l'identificateur de version de l'assembly ou du module dans la portée de métadonnées actuelle. |
|
Obtient la signature de métadonnées binaires associée au jeton spécifié. |
|
Retourne des informations de métadonnées pour le type représenté par le jeton TypeDef spécifié. |
|
Obtient les métadonnées associées au type référencé par le jeton TypeRef spécifié. |
|
Obtient la signature de métadonnées binaires de la spécification de type représentée par le jeton spécifié. |
|
Obtient la chaîne littérale représentée par le jeton de métadonnées spécifié. |
|
Obtient une valeur indiquant si le champ, la méthode ou le type représenté par le jeton de métadonnées spécifié a une portée globale. |
|
Obtient une valeur indiquant si le jeton spécifié contient une référence valide à un objet code. |
|
Réinitialise l'énumérateur spécifié à la position spécifiée. |
|
Obtient des informations relatives au type pour le type référencé par le jeton TypeRef spécifié. |
Notes
Le design de l'interface IMetaDataImport a pour objectif d'être utilisé par les outils et les services qui importeront des informations de type (par exemple, les outils de développement) ou géreront des composants déployés (par exemple, les services de résolution/activation). Les méthodes dans IMetaDataImport font partie des catégories de tâches suivantes :
Énumération des collections d'éléments dans la portée de métadonnées.
Recherche d'un élément qui a un jeu spécifique de caractéristiques.
Obtention des propriétés d'un élément spécifié.
Les méthodes Get sont conçues spécifiquement pour retourner des propriétés à valeur unique d'un élément de métadonnées. Lorsque la propriété est une référence à un autre élément, un jeton est retourné pour cet élément. Tout type d'entrée de pointeur peut être NULL pour indiquer que la valeur particulière n'est pas demandée. Pour obtenir des propriétés qui sont essentiellement des objets de collection (par exemple, la collection des interfaces qu'une classe implémente), utilisez les méthodes d'énumération.
Configuration requise
Plateformes : consultez Configuration requise du .NET Framework.
En-tête : Cor.h
Bibliothèque : utilisée en tant que ressource dans MsCorEE.dll
Versions du .NET Framework : 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0