Compartilhar via


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

Método IMetaDataImport::CloseEnum

Fecha o enumerador de identificador especificado.

Método IMetaDataImport::CountEnum

Obtém o número de elementos no enumerador com o identificador especificado.

Método IMetaDataImport::EnumCustomAttributes

Enumera uma lista de tokens de definição de atributo personalizado associado ao tipo especificado ou membro.

Método IMetaDataImport::EnumEvents

Enumera os tokens de definição de evento para o token de TypeDef especificado.

Método IMetaDataImport::EnumFields

Enumera FieldDef tokens para o tipo referenciada pelo token de TypeDef especificado.

Método IMetaDataImport::EnumFieldsWithName

Enumera FieldDef tokens do tipo especificado com o nome especificado.

Método IMetaDataImport::EnumInterfaceImpls

Enumera MethodDef tokens representando implementações de interface.

Método IMetaDataImport::EnumMemberRefs

Enumera os tokens de MemberRef que representa os membros do tipo especificado.

Método IMetaDataImport::EnumMembers

Enumera MemberDef tokens que representa os membros do tipo especificado.

Método IMetaDataImport::EnumMembersWithName

Enumera MemberDef tokens que representa os membros do tipo especificado com o nome especificado.

Método IMetaDataImport::EnumMethodImpls

Enumera os tokens de MethodBody e MethodDeclaration representando os métodos do tipo especificado.

Método IMetaDataImport::EnumMethods

Enumera MethodDef tokens representando os métodos do tipo especificado.

Método IMetaDataImport::EnumMethodSemantics

Enumera as propriedades e os eventos de alterar de propriedade ao qual o método especificado está relacionado.

Método IMetaDataImport::EnumMethodsWithName

Enumera os métodos que possuem o nome especificado e que são definidos pelo tipo referenciado pelo token de TypeDef especificado.

Método IMetaDataImport::EnumModuleRefs

Enumera ModuleRef símbolos que representam os módulos importados.

Método IMetaDataImport::EnumParams

Enumera ParamDef tokens representando os parâmetros do método referenciada pelo token de MethodDef especificado.

Método IMetaDataImport::EnumPermissionSets

Enumera as permissões para objetos em um escopo de metadados especificado.

Método IMetaDataImport::EnumProperties

Enumera PropertyDef tokens representando as propriedades do tipo referenciada pelo token de TypeDef especificado.

Método IMetaDataImport::EnumSignatures

Enumera os tokens de assinatura representando assinaturas independentes no escopo corrente.

Método IMetaDataImport::EnumTypeDefs

Enumera os tokens de TypeDef que representa todos os tipos de dentro do escopo corrente.

Método IMetaDataImport::EnumTypeRefs

Enumera TypeRef símbolos definidos no escopo de metadados corrente.

Método IMetaDataImport::EnumTypeSpecs

Enumera TypeSpec símbolos definidos no escopo de metadados corrente.

Método IMetaDataImport::EnumUnresolvedMethods

Enumera MemberDef tokens representando os métodos não resolvidos no escopo de metadados corrente.

Método IMetaDataImport::EnumUserStrings

Enumera os tokens de string que representa literais string no escopo de metadados corrente.

Método IMetaDataImport::FindField

Obtém o FieldDef token para o campo que é um membro do tipo especificado e tem o nome especificado e a assinatura de metadados.

Método IMetaDataImport::FindMember

Obtém um ponteiro para o MemberDef token para o membro definido pelo tipo especificado com o nome especificado e a assinatura de metadados.

Método IMetaDataImport::FindMemberRef

Obtém um ponteiro para o MemberRef token para o membro definido pelo tipo especificado com o nome especificado e a assinatura de metadados.

Método IMetaDataImport::FindMethod

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.

Método IMetaDataImport::FindTypeDefByName

Obtém um ponteiro para os metadados de TypeDef token para o tipo com o nome especificado.

Método IMetaDataImport::FindTypeRef

Obtém um ponteiro para o token de metadados de TypeRef que referencia o tipo no escopo da Pesquisar especificada com o nome especificado.

Método IMetaDataImport::GetClassLayout

Obtém informações de layout para a classe referenciada por TypeDef especificado token.

Método IMetaDataImport::GetCustomAttributeByName

Obtém o valor do atributo personalizado, receberá seu nome.

Método IMetaDataImport::GetCustomAttributeProps

Obtém o valor do atributo personalizado, dado seu token de metadados.

Método IMetaDataImport::GetEventProps

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.

Método IMetaDataImport::GetFieldMarshal

Obtém um ponteiro para o tipo nativo, não gerenciado do campo representado pelo token de metadados de campo especificado.

Método IMetaDataImport::GetFieldProps

Obtém metadados associados ao campo referido por FieldDef especificado token.

Método IMetaDataImport::GetInterfaceImplProps

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.

Método IMetaDataImport::GetMemberProps

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.

Método IMetaDataImport::GetMemberRefProps

Obtém metadados associados ao membro referenciado pelo token especificado.

Método IMetaDataImport::GetMethodProps

Os metadados associados ao método referenciado por MethodDef especificado obtém token.

Método IMetaDataImport::GetMethodSemantics

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.

Método IMetaDataImport::GetModuleFromScope

Obtém um ponteiro para os metadados do token para o módulo referenciado no escopo de metadados corrente.

Método IMetaDataImport::GetModuleRefProps

Obtém o nome do módulo referenciado pelo token de metadados especificado.

Método IMetaDataImport::GetNameFromToken

Obtém o nome UTF-8 do objeto referenciado pelo token de metadados especificado.

Método IMetaDataImport::GetNativeCallConvFromSig

Obtém o nativo convenção de chamada do método é representado pelo ponteiro assinatura especificada.

Método IMetaDataImport::GetNestedClassProps

Obtém a TypeDef token para um tipo pai delimitador do tipo aninhado especificado.

Método IMetaDataImport::GetParamForMethodIndex

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.

Método IMetaDataImport::GetParamProps

Obtém os valores de metadados para o parâmetro referenciado por ParamDef especificado token.

Método IMetaDataImport::GetPermissionSetProps

Obtém os metadados associados ao sistema.segurança.PermissionSet representada pelo token de permissão especificado.

Método IMetaDataImport::GetPinvokeMap

Obtém um ModuleRef token para representar o assembly de destino de uma telefonar de PInvoke.

Método IMetaDataImport::GetPropertyProps

Obtém os metadados associados a propriedade representada pelo token especificado.

Método IMetaDataImport::GetRVA

Obtém o deslocamento do endereço virtual relativo do código objeto representado pelo símbolo especificado.

Método IMetaDataImport::GetScopeProps

Obtém o nome e opcionalmente o identificador de versão do assembly ou módulo no escopo de metadados corrente.

Método IMetaDataImport::GetSigFromToken

Obtém a assinatura binária metadados associada com o token especificado.

Método IMetaDataImport::GetTypeDefProps

Retorna informações de metadados para o tipo representada pelo token de TypeDef especificado.

Método IMetaDataImport::GetTypeRefProps

Os metadados associados ao tipo referenciado pelo TypeRef especificado obtém token.

Método IMetaDataImport::GetTypeSpecFromToken

Obtém a assinatura metadados binário da especificação do tipo representada pelo token especificado.

Método IMetaDataImport::GetUserString

Obtém a seqüência literal representada pelo token de metadados especificado.

Método IMetaDataImport::IsGlobal

Obtém um valor indicando se o campo, método ou tipo representada pelo token de metadados especificado tem escopo global.

Método IMetaDataImport::IsValidToken

Obtém um valor que indica se o token especificado contém uma referência válida para um objeto de código.

Método IMetaDataImport::ResetEnum

Redefine o enumerador especificado na posição especificada.

Método IMetaDataImport::ResolveTypeRef

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

Consulte também

Referência

Interface IMetaDataImport2

Outros recursos

Interfaces de metadados

Visão geral dos metadados