Condividi tramite


IMetaDataEmit

Aggiornamento: novembre 2007

Fornisce metodi per la creazione, la modifica e il salvataggio dei metadati sull'assembly nell'ambito attualmente definito. I metadati possono essere archiviati in memoria o essere salvati su disco.

interface IMetaDataEmit : IUnknown {
        
    HRESULT ApplyEditAndContinue ( 
        [in]  IUnknown    *pImport
    );
        
    HRESULT DefineCustomAttribute ( 
        [in]  mdToken     tkObj, 
        [in]  mdToken     tkType, 
        [in]  void const  *pCustomAttribute, 
        [in]  ULONG       cbCustomAttribute, 
        [out] mdCustomAttribute *pcv 
    );
        
    HRESULT DefineEvent (    
        [in]  mdTypeDef   td, 
                [in]  LPCWSTR     szEvent, 
        [in]  DWORD       dwEventFlags, 
                [in]  mdToken     tkEventType, 
        [in]  mdMethodDef mdAddOn, 
        [in]  mdMethodDef mdRemoveOn, 
        [in]  mdMethodDef mdFire, 
        [in]  mdMethodDef rmdOtherMethods[], 
        [out] mdEvent     *pmdEvent 
    );
        
    HRESULT DefineField ( 
        [in]  mdTypeDef   td, 
                [in]  LPCWSTR     szName, 
        [in]  DWORD       dwFieldFlags, 
                [in]  PCCOR_SIGNATURE pvSigBlob, 
        [in]  ULONG       cbSigBlob, 
        [in]  DWORD       dwCPlusTypeFlag, 
        [in]  void const  *pValue, 
        [in]  ULONG       cchValue, 
        [out] mdFieldDef  *pmd 
    );
        
    HRESULT DefineImportMember ( 
        [in]  IMetaDataAssemblyImport *pAssemImport, 
        [in]  const void  *pbHashValue, 
        [in]  ULONG       cbHashValue,
        [in]  IMetaDataImport *pImport, 
        [in]  mdToken     mbMember, 
        [in]  IMetaDataAssemblyEmit *pAssemEmit, 
        [in]  mdToken     tkParent, 
        [out] mdMemberRef *pmr 
    );
        
    HRESULT DefineImportType ( 
        [in]  IMetaDataAssemblyImport *pAssemImport, 
        [in]  const void  *pbHashValue, 
        [in]  ULONG       cbHashValue,  
        [in]  IMetaDataImport *pImport, 
        [in]  mdTypeDef   tdImport, 
        [in]  IMetaDataAssemblyEmit *pAssemEmit, 
        [out] mdTypeRef   *ptr
    );
        
    HRESULT DefineMemberRef ( 
        [in]  mdToken     tkImport, 
        [in]  LPCWSTR     szName, 
        [in]  PCCOR_SIGNATURE pvSigBlob, 
        [in]  ULONG       cbSigBlob, 
        [out] mdMemberRef *pmr 
    );
        
    HRESULT DefineMethod (    
        [in]  mdTypeDef   td, 
        [in]  LPCWSTR     szName, 
        [in]  DWORD       dwMethodFlags, 
        [in]  PCCOR_SIGNATURE pvSigBlob, 
        [in]  ULONG       cbSigBlob, 
        [in]  ULONG       ulCodeRVA, 
        [in]  DWORD       dwImplFlags, 
        [out] mdMethodDef *pmd
    );
        
    HRESULT DefineMethodImpl ( 
        [in]  mdTypeDef   td, 
        [in]  mdToken     tkBody, 
        [in]  mdToken     tkDecl
    );
        
    HRESULT DefineModuleRef (   
        [in]  LPCWSTR     szName, 
        [out] mdModuleRef *pmur 
    );
        
    HRESULT DefineNestedType ( 
        [in]  LPCWSTR     szTypeDef,
        [in]  DWORD       dwTypeDefFlags, 
        [in]  mdToken     tkExtends, 
        [in]  mdToken     rtkImplements[], 
        [in]  mdTypeDef   tdEncloser, 
        [out] mdTypeDef   *ptd
    );
        
    HRESULT DefineParam (
        [in]  mdMethodDef md, 
        [in]  ULONG       ulParamSeq, 
        [in]  LPCWSTR     szName, 
                [in]  DWORD       dwParamFlags, 
        [in]  DWORD       dwCPlusTypeFlag, 
                [in]  void const  *pValue,
        [in]  ULONG       cchValue, 
        [out] mdParamDef  *ppd 
    );
        
    HRESULT DefinePermissionSet (    
        [in]  mdToken     tk, 
        [in]  DWORD       dwAction, 
        [in]  void const  *pvPermission, 
        [in]  ULONG       cbPermission, 
        [out] mdPermission *ppm 
    );
        
    HRESULT DefinePinvokeMap ( 
        [in]  mdToken     tk, 
        [in]  DWORD       dwMappingFlags, 
        [in]  LPCWSTR     szImportName, 
        [in]  mdModuleRef mrImportDLL 
    );
        
    HRESULT DefineProperty ( 
        [in]  mdTypeDef   td, 
        [in]  LPCWSTR     szProperty, 
                [in]  DWORD       dwPropFlags, 
        [in]  PCCOR_SIGNATURE pvSig, 
        [in]  ULONG       cbSig, 
        [in]  DWORD       dwCPlusTypeFlag, 
                [in]  void const  *pValue, 
        [in]  ULONG       cchValue, 
        [in]  mdMethodDef mdSetter, 
        [in]  mdMethodDef mdGetter, 
        [in]  mdMethodDef rmdOtherMethods[], 
        [out] mdProperty  *pmdProp 
    );
        
    HRESULT DefineSecurityAttributeSet ( 
        [in]  mdToken     tkObj, 
        [in]  COR_SECATTR rSecAttrs[], 
        [in]  ULONG       cSecAttrs, 
        [out] ULONG       *pulErrorAttr 
    );
        
    HRESULT DefineTypeDef ( 
                [in]  LPCWSTR     szTypeDef, 
        [in]  DWORD       dwTypeDefFlags, 
                [in]  mdToken     tkExtends, 
        [in]  mdToken     rtkImplements[], 
        [out] mdTypeDef   *ptd
    );
        
    HRESULT DefineTypeRefByName ( 
        [in]  mdToken     tkResolutionScope, 
        [in]  LPCWSTR     szName, 
        [out] mdTypeRef   *ptr 
    );
        
    HRESULT DefineUserString ( 
        [in]  LPCWSTR szString, 
        [in]  ULONG       cchString, 
        [out] mdString    *pstk 
    );
        
    HRESULT DeleteClassLayout (
        [in]  mdTypeDef   td
    );
        
    HRESULT DeleteFieldMarshal (
        [in]  mdToken     tk
    );
        
    HRESULT DeletePinvokeMap ( 
        [in]  mdToken     tk 
    );
        
    HRESULT DeleteToken ( 
        [in]  mdToken     tkObj 
    );
        
    HRESULT GetSaveSize (    
        [in]  CorSaveSize fSave,
        [out] DWORD       *pdwSaveSize
    );
        
    HRESULT GetTokenFromSig (   
        [in]  PCCOR_SIGNATURE pvSig, 
        [in]  ULONG       cbSig, 
        [out] mdSignature *pmsig 
    );
        
    HRESULT GetTokenFromTypeSpec ( 
        [in]  PCCOR_SIGNATURE pvSig, 
        [in]  ULONG       cbSig, 
        [out] mdTypeSpec *ptypespec 
    ); 
        
    HRESULT Merge ( 
        [in]  IMetaDataImport *pImport, 
        [in]  IMapToken   *pHostMapToken, 
        [in]  IUnknown    *pHandler 
    );
        
    HRESULT MergeEnd ();
        
    HRESULT Save ( 
        [in]  LPCWSTR     szFile, 
        [in]  DWORD       dwSaveFlags
    );
        
    HRESULT SaveToMemory (   
        [in]  void        *pbData, 
        [in]  ULONG       cbData 
    );
        
    HRESULT SaveToStream (   
        [in]  IStream     *pIStream,
        [in]  DWORD       dwSaveFlags
    );
        
    HRESULT SetClassLayout (   
        [in]  mdTypeDef   td, 
        [in]  DWORD       dwPackSize, 
        [in]  COR_FIELD_OFFSET rFieldOffsets[], 
        [in]  ULONG       ulClassSize 
    );
        
    HRESULT SetCustomAttributeValue ( 
        [in]  mdCustomAttribute pcv, 
        [in]  void const  *pCustomAttribute,  
        [in]  ULONG       cbCustomAttribute 
    );
        
    HRESULT SetEventProps (  
        [in]  mdEvent     ev, 
        [in]  DWORD       dwEventFlags, 
        [in]  mdToken     tkEventType, 
        [in]  mdMethodDef mdAddOn, 
        [in]  mdMethodDef mdRemoveOn, 
        [in]  mdMethodDef mdFire, 
        [in]  mdMethodDef rmdOtherMethods[] 
    );
        
    HRESULT SetFieldMarshal (    
        [in]  mdToken     tk, 
        [in]  PCCOR_SIGNATURE pvNativeType, 
        [in]  ULONG       cbNativeType 
    );
        
    HRESULT SetFieldProps (  
                [in]  mdFieldDef  fd, 
        [in]  DWORD       dwFieldFlags, 
        [in]  DWORD       dwCPlusTypeFlag, 
                [in]  void const  *pValue, 
        [in]  ULONG       cchValue 
    );
        
    HRESULT SetFieldRVA ( 
        [in]  mdFieldDef  fd, 
        [in]  ULONG       ulRVA 
    );
        
    HRESULT SetHandler ( 
        [in]  IUnknown    *pUnk
    );
        
    HRESULT SetMethodProps ( 
        [in]  mdMethodDef md, 
        [in]  DWORD       dwMethodFlags,
        [in]  ULONG       ulCodeRVA, 
        [in]  DWORD       dwImplFlags 
    );
        
    HRESULT SetMethodImplFlags ( 
                [in]  mdMethodDef md, 
        [in]  DWORD       dwImplFlags 
        );
        
    HRESULT SetModuleProps ( 
        [in]  LPCWSTR     szName
    ); 
        
    HRESULT SetParamProps ( 
        [in]  mdParamDef  pd, 
        [in]  LPCWSTR     szName, 
        [in]  DWORD       dwParamFlags, 
        [in]  DWORD       dwCPlusTypeFlag, 
        [in]  void const  *pValue, 
        [in]  ULONG       cchValue 
    );
        
    HRESULT SetParent ( 
        [in]  mdMemberRef mr, 
        [in]  mdToken     tk 
    );
        
    HRESULT SetPermissionSetProps ( 
        [in]  mdToken     tk, 
        [in]  DWORD       dwAction, 
        [in]  void const  *pvPermission, 
        [in]  ULONG       cbPermission, 
        [out] mdPermission *ppm 
    );
        
    HRESULT SetPinvokeMap ( 
        [in]  mdToken     tk, 
        [in]  DWORD       dwMappingFlags,
        [in]  LPCWSTR     szImportName, 
        [in]  mdModuleRef mrImportDLL 
    );
        
    HRESULT SetPropertyProps ( 
        [in]  mdProperty  pr, 
                [in]  DWORD       dwPropFlags, 
        [in]  DWORD       dwCPlusTypeFlag, 
                [in]  void const  *pValue, 
        [in]  ULONG       cchValue, 
        [in]  mdMethodDef mdSetter, 
        [in]  mdMethodDef mdGetter, 
        [in]  mdMethodDef rmdOtherMethods[] 
    );
        
    HRESULT SetRVA ( 
        [in]  mdMethodDef md, 
        [in]  ULONG       ulRVA 
    );
        
    HRESULT SetTypeDefProps (
        [in]  mdTypeDef   td, 
                [in]  DWORD       dwTypeDefFlags, 
        [in]  mdToken     tkExtends, 
                [in]  mdToken     rtkImplements[] 
    );
        
    HRESULT TranslateSigWithScope ( 
        [in]  IMetaDataAssemblyImport *pAssemImport, 
        [in]  const void  *pbHashValue, 
        [in]  ULONG       cbHashValue, 
        [in]  IMetaDataImport *import, 
        [in]  PCCOR_SIGNATURE pbSigBlob, 
        [in]  ULONG       cbSigBlob,
        [in]  IMetaDataAssemblyEmit *pAssemEmit, 
        [in]  IMetaDataEmit *emit, 
        [out] PCOR_SIGNATURE pvTranslatedSig, 
        [in]  ULONG       cbTranslatedSigMax, 
        [out] ULONG       *pcbTranslatedSig 
    );
        
};

Metodi

Metodo

Descrizione

Metodo IMetaDataEmit::ApplyEditAndContinue

Aggiorna l'ambito dell'assembly corrente in base alle modifiche apportate nel parametro pImport specificato.

Metodo IMetaDataEmit::DefineCustomAttribute

Crea una definizione per un attributo personalizzato con la firma dei metadati specificata, da associare all'oggetto specificato, e ottiene un token per la definizione dell'attributo personalizzato.

Metodo IMetaDataEmit::DefineEvent

Crea la definizione di un evento con la firma dei metadati specificata e ottiene un token alla definizione di tale evento.

Metodo IMetaDataEmit::DefineField

Crea una definizione per un campo con la firma dei metadati specificata e ottiene un token per tale definizione.

Metodo IMetaDataEmit::DefineImportMember

Crea la definizione di un membro di un tipo definito in un modulo esterno all'ambito corrente e ottiene un token per la definizione di tale riferimento.

Metodo IMetaDataEmit::DefineImportType

Crea una definizione per un riferimento a un tipo definito in un modulo esterno all'ambito corrente e ottiene un token per tale definizione.

Metodo IMetaDataEmit::DefineMemberRef

Crea una definizione che consente di fare riferimento a un membro di un modulo esterno all'ambito corrente e ottiene un token per tale definizione.

Metodo IMetaDataEmit::DefineMethod

Crea una definizione per un metodo con la firma specificata e restituisce un token per tale definizione.

Metodo IMetaDataEmit::DefineMethodImpl

Crea una definizione per l'implementazione di un metodo ereditato da un'interfaccia e restituisce un token per tale definizione.

Metodo IMetaDataEmit::DefineModuleRef

Crea la firma dei metadati per un modulo con il nome specificato.

Metodo IMetaDataEmit::DefineNestedType

Crea la firma dei metadati di una definizione di tipo e restituisce un token mdTypeDef per tale tipo, specificando inoltre che il tipo definito è un membro del tipo a cui fa riferimento tdEncloser.

Metodo IMetaDataEmit::DefineParam

Crea la definizione di un parametro con la firma specificata per il metodo a cui fa riferimento il token specificato e ottiene un token per tale definizione.

Metodo IMetaDataEmit::DefinePermissionSet

Crea una definizione per un set di autorizzazioni con la firma dei metadati specificata e ottiene un token per tale definizione.

Metodo IMetaDataEmit::DefinePinvokeMap

Imposta le caratteristiche della firma PInvoke del metodo a cui fa riferimento il token specificato.

Metodo IMetaDataEmit::DefineProperty

Crea la definizione di una proprietà per il tipo specificato, con le funzioni di accesso ai metodi get e set specificate, e ottiene un token per tale definizione.

Metodo IMetaDataEmit::DefineSecurityAttributeSet

Crea un insieme di autorizzazioni di sicurezza da associare all'oggetto a cui fa riferimento il token specificato.

Metodo IMetaDataEmit::DefineTypeDef

Crea una definizione di tipo per un tipo Common Language Runtime e ottiene un token di metadati a tale definizione.

Metodo IMetaDataEmit::DefineTypeRefByName

Ottiene un token di metadati per un tipo definito in un altro modulo al di fuori dell'ambito corrente.

Metodo IMetaDataEmit::DefineUserString

Ottiene un token di metadati per la stringa letterale specificata.

Metodo IMetaDataEmit::DeleteClassLayout

Elimina la firma dei metadati del layout della classe per il tipo a cui fa riferimento il token specificato.

Metodo IMetaDataEmit::DeleteFieldMarshal

Elimina la firma PInvoke di metadati di marshalling relativa all'oggetto a cui fa riferimento il token specificato.

Metodo IMetaDataEmit::DeletePinvokeMap

Elimina i metadati di mapping PInvoke per l'oggetto a cui fa riferimento il token specificato.

Metodo IMetaDataEmit::DeleteToken

Elimina il token specificato dall'ambito dei metadati corrente.

Metodo IMetaDataEmit::GetSaveSize

Ottiene una stima della dimensione binaria dell'assembly nell'ambito corrente.

Metodo IMetaDataEmit::GetTokenFromSig

Ottiene un token per la firma dei metadati specificata.

Metodo IMetaDataEmit::GetTokenFromTypeSpec

Ottiene un token di metadati per il tipo con la firma dei metadati specificata.

Metodo IMetaDataEmit::Merge

Aggiunge l'ambito importato specificato all'elenco degli ambiti da unire.

Metodo IMetaDataEmit::MergeEnd

Unisce all'ambito corrente tutti gli ambiti dei metadati specificati da una o più chiamate precedenti a IMetaDataEmit::Merge.

Metodo IMetaDataEmit::Save

Salva tutti i metadati inclusi nell'ambito corrente nel file all'indirizzo specificato.

Metodo IMetaDataEmit::SaveToMemory

Salva tutti i metadati inclusi nell'ambito corrente nell'area di memoria specificata.

Metodo IMetaDataEmit::SaveToStream

Salva tutti i metadati dell'ambito corrente nell'oggetto IStream specificato.

Metodo IMetaDataEmit::SetClassLayout

Imposta o aggiorna la firma di layout della classe di un tipo definito da una precedente chiamata a IMetaDataEmit::DefineTypeDef.

Metodo IMetaDataEmit::SetCustomAttributeValue

Imposta o aggiorna il valore di un attributo personalizzato definito tramite una precedente chiamata a IMetaDataEmit::DefineCustomAttribute.

Metodo IMetaDataEmit::SetEventProps

Imposta o aggiorna una determinata funzionalità di un evento definito tramite una precedente chiamata a IMetaDataEmit::DefineEvent.

Metodo IMetaDataEmit::SetFieldMarshal

Imposta le informazioni sul marshalling di PInvoke per il campo, il risultato del metodo o il parametro del metodo a cui fa riferimento il token specificato.

Metodo IMetaDataEmit::SetFieldProps

Imposta o aggiorna il valore predefinito per il campo a cui fa riferimento il token specificato.

Metodo IMetaDataEmit::SetFieldRVA

Imposta un valore di variabile globale per l'indirizzo virtuale relativo del campo a cui fa riferimento il token specificato.

Metodo IMetaDataEmit::SetHandler

Imposta il metodo a cui fa riferimento il puntatore IUnknown specificato come un callback di notifica delle modifiche di mapping dei token.

Metodo IMetaDataEmit::SetMethodImplFlags

Imposta o aggiorna la firma dei metadati dell'implementazione del metodo ereditato a cui fa riferimento il token specificato.

Metodo IMetaDataEmit::SetMethodProps

Imposta o aggiorna la funzione, archiviata nell'indirizzo virtuale relativo specificato, di un metodo definito da una precedente chiamata a IMetaDataEmit::DefineMethod.

Metodo IMetaDataEmit::SetModuleProps

Aggiorna i riferimenti a un modulo definito da una precedente chiamata a IMetaDataEmit::DefineModuleRef.

Metodo IMetaDataEmit::SetParamProps

Imposta o modifica le funzioni del parametro di un metodo definito tramite una precedente chiamata a IMetaDataEmit::DefineParam.

Metodo IMetaDataEmit::SetParent

Stabilisce che il membro specificato, definito da una precedente chiamata a IMetaDataEmit::DefineMemberRef, è un membro del tipo specificato, definito da una precedente chiamata a IMetaDataEmit::DefineTypeDef.

Metodo IMetaDataEmit::SetPermissionSetProps

Imposta o aggiorna le funzionalità della firma dei metadati di un set di autorizzazioni definito tramite una precedente chiamata a IMetaDataEmit::DefinePermissionSet.

Metodo IMetaDataEmit::SetPinvokeMap

Imposta o modifica le funzioni della firma PInvoke di un metodo, come definito da una precedente chiamata a IMetaDataEmit::DefinePinvokeMap.

Metodo IMetaDataEmit::SetPropertyProps

Imposta le funzioni archiviate in metadati per una proprietà definita da una precedente chiamata a IMetaDataEmit::DefineProperty.

Metodo IMetaDataEmit::SetRVA

Imposta l'indirizzo virtuale relativo del metodo specificato.

Metodo IMetaDataEmit::SetTypeDefProps

Imposta le funzionalità di un tipo definito da una precedente chiamata a IMetaDataEmit::DefineTypeDef.

Metodo IMetaDataEmit::TranslateSigWithScope

Importa un assembly nell'ambito corrente e ottiene una nuova firma dei metadati per l'ambito unito.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: Cor.h

Libreria: utilizzata come risorsa in MsCorEE.dll

Versioni di .NET Framework: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0

Vedere anche

Riferimenti

IMetaDataEmit2

Altre risorse

Interfacce di metadati