共用方式為


IMetaDataEmit

更新:2007 年 11 月

提供方法,以便在目前定義的範圍中建立、修改和儲存與組件有關的中繼資料。此中繼資料可以儲存在記憶體或磁碟中。

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 
    );
        
};

方法

方法

說明

IMetaDataEmit::ApplyEditAndContinue 方法

以指定的 pImport 中所做的變更來更新目前的組件範圍。

IMetaDataEmit::DefineCustomAttribute 方法

利用要附加至指定物件的指定中繼資料簽章建立自訂屬性的定義,並取得該自訂屬性定義的語彙基元。

IMetaDataEmit::DefineEvent 方法

為具有指定中繼資料簽章的事件建立定義,並為該事件定義取得語彙基元。

IMetaDataEmit::DefineField 方法

以指定的中繼資料簽章建立欄位的定義,並取得該欄位定義的語彙基元。

IMetaDataEmit::DefineImportMember 方法

為目前範圍之外的模組中所定義的型別成員建立定義,並為該參考定義取得語彙基元。

IMetaDataEmit::DefineImportType 方法

為目前範圍以外之模組中所定義的型別建立參考定義,並取得該參考定義的語彙基元。

IMetaDataEmit::DefineMemberRef 方法

建立目前範圍以外之模組成員的參考定義,並取得該參考定義的語彙基元。

IMetaDataEmit::DefineMethod 方法

以指定簽章建立方法的定義,並將語彙基元傳回該方法定義。

IMetaDataEmit::DefineMethodImpl 方法

針對繼承自介面的方法實作建立定義,並將語彙基元傳回到該方法實作定義。

IMetaDataEmit::DefineModuleRef 方法

針對具有指定名稱的模組建立中繼資料簽章。

IMetaDataEmit::DefineNestedType 方法

建立某型別定義的中繼資料簽章,並傳回該型別的 mdTypeDef 語彙基元,以及額外指定已定義的型別為 tdEncloser 所參考之型別的成員。

IMetaDataEmit::DefineParam 方法

針對指定語彙基元所參考的方法建立具有指定簽章的參數定義,並為該參數定義取得語彙基元。

IMetaDataEmit::DefinePermissionSet 方法

以指定的中繼資料簽章建立使用權限集合的定義,並取得該使用權限集合定義的語彙基元。

IMetaDataEmit::DefinePinvokeMap 方法

設定指定語彙基元所參考方法之 PInvoke 簽章的功能。

IMetaDataEmit::DefineProperty 方法

以指定的 getset 方法存取子來建立指定之型別的屬性定義,並取得該屬性定義的語彙基元。

IMetaDataEmit::DefineSecurityAttributeSet 方法

建立一組安全性權限,以附加至指定語彙基元所參考的物件。

IMetaDataEmit::DefineTypeDef 方法

為 Common Language Runtime 型別建立型別定義,並為該型別定義取得中繼資料語彙基元。

IMetaDataEmit::DefineTypeRefByName 方法

取得定義在目前範圍之外的另一個模組中的某型別的中繼資料語彙基元。

IMetaDataEmit::DefineUserString 方法

為指定的常值字串取得中繼資料語彙基元。

IMetaDataEmit::DeleteClassLayout 方法

為指定語彙基元所參考的型別,終結類別配置中繼資料簽章。

IMetaDataEmit::DeleteFieldMarshal 方法

終結指定語彙基元所參考物件之 PInvoke 封送處理中繼資料簽章。

IMetaDataEmit::DeletePinvokeMap 方法

終結指定語彙基元所參考的物件之 PInvoke 對應中繼資料。

IMetaDataEmit::DeleteToken 方法

從目前的中繼資料範圍中刪除指定的語彙基元。

IMetaDataEmit::GetSaveSize 方法

在目前範圍中取得預估的組件二進位大小。

IMetaDataEmit::GetTokenFromSig 方法

為指定的中繼資料簽章取得語彙基元。

IMetaDataEmit::GetTokenFromTypeSpec 方法

以指定的中繼資料簽章取得此型別的中繼資料語彙基元。

IMetaDataEmit::Merge 方法

將指定的匯入範圍加入至要合併的範圍清單。

IMetaDataEmit::MergeEnd 方法

將之前的一或多個 IMetaDataEmit::Merge 呼叫所指定的所有中繼資料範圍合併到目前的範圍中。

IMetaDataEmit::Save 方法

將目前範圍內的所有中繼資料儲存到指定位址上的檔案中。

IMetaDataEmit::SaveToMemory 方法

將目前範圍中的所有中繼資料儲存到指定的記憶體區域中。

IMetaDataEmit::SaveToStream 方法

將目前範圍中的所有中繼資料儲存到指定的 IStream 中。

IMetaDataEmit::SetClassLayout 方法

設定或更新之前 IMetaDataEmit::DefineTypeDef 的呼叫所定義型別之類別配置簽章。

IMetaDataEmit::SetCustomAttributeValue 方法

設定或更新之前的 IMetaDataEmit::DefineCustomAttribute 呼叫所定義的自訂屬性的值。

IMetaDataEmit::SetEventProps 方法

設定或更新之前的 IMetaDataEmit::DefineEvent 呼叫所定義事件之指定功能。

IMetaDataEmit::SetFieldMarshal 方法

設定指定之語彙基元所參考的欄位、方法傳回或是方法參數的 PInvoke 封送處理資訊。

IMetaDataEmit::SetFieldProps 方法

設定或更新指定欄位語彙基元所參考欄位的預設值。

IMetaDataEmit::SetFieldRVA 方法

針對指定語彙基元所參考欄位的相對虛擬位址,設定全域變數值。

IMetaDataEmit::SetHandler 方法

將指定的 IUnknown 指標所參考的方法設定為語彙基元重新對應的告知回呼。

IMetaDataEmit::SetMethodImplFlags 方法

設定或更新指定語彙基元所參考繼承方法實作的中繼資料簽章。

IMetaDataEmit::SetMethodProps 方法

設定或更新之前的 IMetaDataEmit::DefineMethod 呼叫所定義方法的功能 (存放於指定的相對虛擬位址上)。

IMetaDataEmit::SetModuleProps 方法

更新之前的 IMetaDataEmit::DefineModuleRef 呼叫所定義的模組的參考。

IMetaDataEmit::SetParamProps 方法

設定或變更由之前的 IMetaDataEmit::DefineParam 呼叫所定義方法參數的功能。

IMetaDataEmit::SetParent 方法

確立指定成員 (如之前的 IMetaDataEmit::DefineMemberRef 呼叫所定義) 為指定型別的成員 (如之前的 IMetaDataEmit::DefineTypeDef 呼叫所定義)。

IMetaDataEmit::SetPermissionSetProps 方法

設定或更新使用權限集合的中繼資料簽章功能,其由上一個 IMetaDataEmit::DefinePermissionSet 呼叫所定義。

IMetaDataEmit::SetPinvokeMap 方法

設定或變更方法的 PInvoke 簽章的功能,如之前的 IMetaDataEmit::DefinePinvokeMap 呼叫所定義。

IMetaDataEmit::SetPropertyProps 方法

設定存放在之前的 IMetaDataEmit::DefineProperty 呼叫所定義的屬性中繼資料內的功能。

IMetaDataEmit::SetRVA 方法

設定指定方法的相對虛擬位址。

IMetaDataEmit::SetTypeDefProps 方法

設定之前的 IMetaDataEmit::DefineTypeDef 呼叫所定義型別的功能。

IMetaDataEmit::TranslateSigWithScope 方法

將組件匯入目前的範圍中,並為合併的範圍取得新的中繼資料簽章。

需求

**平台:**請參閱 .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

請參閱

參考

IMetaDataEmit2

其他資源

中繼資料介面