更新: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 方法访问器为指定的类型创建属性定义,并获取指向该属性定义的标记。 |
|
创建安全权限集,此安全权限集要附加到由指定标记引用的对象。 |
|
创建公共语言运行库类型的类型定义,并获取该类型定义的元数据标记。 |
|
获取在当前范围外的另一模块中定义的类型的元数据标记。 |
|
获取指定字符串的元数据标记。 |
|
销毁指定标记引用的类型的类布局元数据签名。 |
|
销毁由指定标记所引用对象的 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 的前一个调用而定义。 |
|
设置或更改通过以前调用 IMetaDataEmit::DefinePinvokeMap 所定义的方法的 PInvoke 签名。 |
|
设置以前调用 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