Interface IMetaDataImport
Fornece métodos para importação e manipular sistema autônomo metadados existentes de um arquivo executável portátil (PE) ou Outros fonte, sistema autônomo uma biblioteca de tipos ou um binário autônomo, time de execução de metadados.
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étodos
Método |
Descrição |
---|---|
Fecha o enumerador de identificador especificado. |
|
Obtém o número de elementos no enumerador com o identificador especificado. |
|
Enumera uma lista de tokens de definição de atributo personalizado associado ao tipo especificado ou membro. |
|
Enumera os tokens de definição de evento para o token de TypeDef especificado. |
|
Enumera FieldDef tokens para o tipo referenciada pelo token de TypeDef especificado. |
|
Enumera FieldDef tokens do tipo especificado com o nome especificado. |
|
Enumera MethodDef tokens representando implementações de interface. |
|
Enumera os tokens de MemberRef que representa os membros do tipo especificado. |
|
Enumera MemberDef tokens que representa os membros do tipo especificado. |
|
Enumera MemberDef tokens que representa os membros do tipo especificado com o nome especificado. |
|
Enumera os tokens de MethodBody e MethodDeclaration representando os métodos do tipo especificado. |
|
Enumera MethodDef tokens representando os métodos do tipo especificado. |
|
Enumera as propriedades e os eventos de alterar de propriedade ao qual o método especificado está relacionado. |
|
Enumera os métodos que possuem o nome especificado e que são definidos pelo tipo referenciado pelo token de TypeDef especificado. |
|
Enumera ModuleRef símbolos que representam os módulos importados. |
|
Enumera ParamDef tokens representando os parâmetros do método referenciada pelo token de MethodDef especificado. |
|
Enumera as permissões para objetos em um escopo de metadados especificado. |
|
Enumera PropertyDef tokens representando as propriedades do tipo referenciada pelo token de TypeDef especificado. |
|
Enumera os tokens de assinatura representando assinaturas independentes no escopo corrente. |
|
Enumera os tokens de TypeDef que representa todos os tipos de dentro do escopo corrente. |
|
Enumera TypeRef símbolos definidos no escopo de metadados corrente. |
|
Enumera TypeSpec símbolos definidos no escopo de metadados corrente. |
|
Enumera MemberDef tokens representando os métodos não resolvidos no escopo de metadados corrente. |
|
Enumera os tokens de string que representa literais string no escopo de metadados corrente. |
|
Obtém o FieldDef token para o campo que é um membro do tipo especificado e tem o nome especificado e a assinatura de metadados. |
|
Obtém um ponteiro para o MemberDef token para o membro definido pelo tipo especificado com o nome especificado e a assinatura de metadados. |
|
Obtém um ponteiro para o MemberRef token para o membro definido pelo tipo especificado com o nome especificado e a assinatura de metadados. |
|
Obtém um ponteiro para o MethodDef token para o método definido pelo tipo especificado com o nome especificado e a assinatura de metadados. |
|
Obtém um ponteiro para os metadados de TypeDef token para o tipo com o nome especificado. |
|
Obtém um ponteiro para o token de metadados de TypeRef que referencia o tipo no escopo da Pesquisar especificada com o nome especificado. |
|
Obtém informações de layout para a classe referenciada por TypeDef especificado token. |
|
Obtém o valor do atributo personalizado, receberá seu nome. |
|
Obtém o valor do atributo personalizado, dado seu token de metadados. |
|
Obtém informações de metadados (incluindo o tipo declarativo, a adição e remover métodos para delegados e os sinalizadores e outros dados associados) para o evento representada pelo token de evento especificado. |
|
Obtém um ponteiro para o tipo nativo, não gerenciado do campo representado pelo token de metadados de campo especificado. |
|
Obtém metadados associados ao campo referido por FieldDef especificado token. |
|
Obtém um ponteiro para os tokens de metadados para o tipo que implementa o método especificado e para a interface que declara método. |
|
Obtém informações de metadados (incluindo o nome, binário assinatura e o endereço virtual relativo) do tipo membro referenciado pelo token de metadados especificado. |
|
Obtém metadados associados ao membro referenciado pelo token especificado. |
|
Os metadados associados ao método referenciado por MethodDef especificado obtém token. |
|
Obtém um ponteiro para a relação entre referenciada pelo token MethodDef especificado e a propriedade par de método e evento referenciado por EventProp especificado token. |
|
Obtém um ponteiro para os metadados do token para o módulo referenciado no escopo de metadados corrente. |
|
Obtém o nome do módulo referenciado pelo token de metadados especificado. |
|
Obtém o nome UTF-8 do objeto referenciado pelo token de metadados especificado. |
|
Obtém o nativo convenção de chamada do método é representado pelo ponteiro assinatura especificada. |
|
Obtém a TypeDef token para um tipo pai delimitador do tipo aninhado especificado. |
|
Obtém um ponteiro para o símbolo que representa o parâmetro na posição ordinal especificado na sequência de parâmetros de método para o método representada pelo token MethodDef especificado. |
|
Obtém os valores de metadados para o parâmetro referenciado por ParamDef especificado token. |
|
Obtém os metadados associados ao sistema.segurança.PermissionSet representada pelo token de permissão especificado. |
|
Obtém um ModuleRef token para representar o assembly de destino de uma telefonar de PInvoke. |
|
Obtém os metadados associados a propriedade representada pelo token especificado. |
|
Obtém o deslocamento do endereço virtual relativo do código objeto representado pelo símbolo especificado. |
|
Obtém o nome e opcionalmente o identificador de versão do assembly ou módulo no escopo de metadados corrente. |
|
Obtém a assinatura binária metadados associada com o token especificado. |
|
Retorna informações de metadados para o tipo representada pelo token de TypeDef especificado. |
|
Os metadados associados ao tipo referenciado pelo TypeRef especificado obtém token. |
|
Obtém a assinatura metadados binário da especificação do tipo representada pelo token especificado. |
|
Obtém a seqüência literal representada pelo token de metadados especificado. |
|
Obtém um valor indicando se o campo, método ou tipo representada pelo token de metadados especificado tem escopo global. |
|
Obtém um valor que indica se o token especificado contém uma referência válida para um objeto de código. |
|
Redefine o enumerador especificado na posição especificada. |
|
Obtém informações de tipo para o tipo referenciada pelo token de TypeRef especificado. |
Comentários
O design do IMetaDataImport interface destina-se principalmente a ser usado por ferramentas e serviços que importar informações de tipo (por exemplo, ferramentas de desenvolvimento) gerenciar componentes ou implantados (por exemplo, serviços de resolução/ativação). Os métodos em IMetaDataImport se enquadram nas categorias de tarefas a seguir:
Enumerando coleções de itens no escopo de metadados.
Localizando um item com um conjunto específico de características.
Obtenção das propriedades de um item especificado.
Os métodos Get projetados especificamente para retornar as propriedades de valor único de um item de metadados. Quando a propriedade é uma referência a outro item, um token para o item será retornado. Qualquer tipo de entrada do ponteiro pode ser nulo para indicar o valor específico não está sendo solicitado. Para obter as propriedades que são basicamente objetos de coleção (por exemplo, a coleção de interfaces que implementa uma classe), use os métodos de enumeração.
Requisitos
Plataformas: See Requisitos de sistema do .NET framework.
Cabeçalho: Cor.h
Biblioteca: Usado sistema autônomo um recurso em MsCorEE.dll
.NET Framework Versions: 3.5 SP1, 3,5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0