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
);
};
方法
方法 |
說明 |
---|---|
以指定的 pImport 中所做的變更來更新目前的組件範圍。 |
|
利用要附加至指定物件的指定中繼資料簽章建立自訂屬性的定義,並取得該自訂屬性定義的語彙基元。 |
|
為具有指定中繼資料簽章的事件建立定義,並為該事件定義取得語彙基元。 |
|
以指定的中繼資料簽章建立欄位的定義,並取得該欄位定義的語彙基元。 |
|
為目前範圍之外的模組中所定義的型別成員建立定義,並為該參考定義取得語彙基元。 |
|
為目前範圍以外之模組中所定義的型別建立參考定義,並取得該參考定義的語彙基元。 |
|
建立目前範圍以外之模組成員的參考定義,並取得該參考定義的語彙基元。 |
|
以指定簽章建立方法的定義,並將語彙基元傳回該方法定義。 |
|
針對繼承自介面的方法實作建立定義,並將語彙基元傳回到該方法實作定義。 |
|
針對具有指定名稱的模組建立中繼資料簽章。 |
|
建立某型別定義的中繼資料簽章,並傳回該型別的 mdTypeDef 語彙基元,以及額外指定已定義的型別為 tdEncloser 所參考之型別的成員。 |
|
針對指定語彙基元所參考的方法建立具有指定簽章的參數定義,並為該參數定義取得語彙基元。 |
|
以指定的中繼資料簽章建立使用權限集合的定義,並取得該使用權限集合定義的語彙基元。 |
|
設定指定語彙基元所參考方法之 PInvoke 簽章的功能。 |
|
以指定的 get 和 set 方法存取子來建立指定之型別的屬性定義,並取得該屬性定義的語彙基元。 |
|
建立一組安全性權限,以附加至指定語彙基元所參考的物件。 |
|
為 Common Language Runtime 型別建立型別定義,並為該型別定義取得中繼資料語彙基元。 |
|
取得定義在目前範圍之外的另一個模組中的某型別的中繼資料語彙基元。 |
|
為指定的常值字串取得中繼資料語彙基元。 |
|
為指定語彙基元所參考的型別,終結類別配置中繼資料簽章。 |
|
終結指定語彙基元所參考物件之 PInvoke 封送處理中繼資料簽章。 |
|
終結指定語彙基元所參考的物件之 PInvoke 對應中繼資料。 |
|
從目前的中繼資料範圍中刪除指定的語彙基元。 |
|
在目前範圍中取得預估的組件二進位大小。 |
|
為指定的中繼資料簽章取得語彙基元。 |
|
以指定的中繼資料簽章取得此型別的中繼資料語彙基元。 |
|
將指定的匯入範圍加入至要合併的範圍清單。 |
|
將之前的一或多個 IMetaDataEmit::Merge 呼叫所指定的所有中繼資料範圍合併到目前的範圍中。 |
|
將目前範圍內的所有中繼資料儲存到指定位址上的檔案中。 |
|
將目前範圍中的所有中繼資料儲存到指定的記憶體區域中。 |
|
將目前範圍中的所有中繼資料儲存到指定的 IStream 中。 |
|
設定或更新之前 IMetaDataEmit::DefineTypeDef 的呼叫所定義型別之類別配置簽章。 |
|
設定或更新之前的 IMetaDataEmit::DefineCustomAttribute 呼叫所定義的自訂屬性的值。 |
|
設定或更新之前的 IMetaDataEmit::DefineEvent 呼叫所定義事件之指定功能。 |
|
設定指定之語彙基元所參考的欄位、方法傳回或是方法參數的 PInvoke 封送處理資訊。 |
|
設定或更新指定欄位語彙基元所參考欄位的預設值。 |
|
針對指定語彙基元所參考欄位的相對虛擬位址,設定全域變數值。 |
|
將指定的 IUnknown 指標所參考的方法設定為語彙基元重新對應的告知回呼。 |
|
設定或更新指定語彙基元所參考繼承方法實作的中繼資料簽章。 |
|
設定或更新之前的 IMetaDataEmit::DefineMethod 呼叫所定義方法的功能 (存放於指定的相對虛擬位址上)。 |
|
更新之前的 IMetaDataEmit::DefineModuleRef 呼叫所定義的模組的參考。 |
|
設定或變更由之前的 IMetaDataEmit::DefineParam 呼叫所定義方法參數的功能。 |
|
確立指定成員 (如之前的 IMetaDataEmit::DefineMemberRef 呼叫所定義) 為指定型別的成員 (如之前的 IMetaDataEmit::DefineTypeDef 呼叫所定義)。 |
|
設定或更新使用權限集合的中繼資料簽章功能,其由上一個 IMetaDataEmit::DefinePermissionSet 呼叫所定義。 |
|
設定或變更方法的 PInvoke 簽章的功能,如之前的 IMetaDataEmit::DefinePinvokeMap 呼叫所定義。 |
|
設定存放在之前的 IMetaDataEmit::DefineProperty 呼叫所定義的屬性中繼資料內的功能。 |
|
設定指定方法的相對虛擬位址。 |
|
設定之前的 IMetaDataEmit::DefineTypeDef 呼叫所定義型別的功能。 |
|
將組件匯入目前的範圍中,並為合併的範圍取得新的中繼資料簽章。 |
需求
**平台:**請參閱 .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