IMetaDataDispenser::OpenScope 方法

打开现有的磁盘文件并将其元数据映射到内存。

HRESULT OpenScope (
    [in]  LPCWSTR     szScope, 
    [in]  DWORD       dwOpenFlags, 
    [in]  REFIID      riid, 
    [out] IUnknown    **ppIUnk
);

参数

  • szScope
    [in] 要打开的文件的名称。 该文件必须包含公共语言运行时 (CLR) 元数据。

  • dwOpenFlags
    [in] 一个 CorOpenFlags 枚举值,用于指定打开模式(读取、写入等)。

  • riid
    [in] 要返回的所需元数据接口的 IID;调用方将使用该接口导入(读取)或发出(写入)元数据。

    riid 的值必须指定一个“导入”或“发出”接口。 有效值包括 IID_IMetaDataEmit、IID_IMetaDataImport、IID_IMetaDataAssemblyEmit、IID_IMetaDataAssemblyImport、IID_IMetaDataEmit2 或 IID_IMetaDataImport2。

  • ppIUnk
    [out] 一个指向返回的接口的指针。

备注

可以查询也可以添加的元数据的内存中副本,其中,查询方法来自“导入”接口之一,添加方法来自“发出”接口之一。

如果目标文件不包含 CLR 元数据,则 OpenScope 方法将失败。

在 .NET Framework 1.0 和 1.1 版中,如果某个打开的范围的 dwOpenFlags 设置为 ofRead,则说明该范围符合共享要求。 也就是说,如果对 OpenScope 的后续调用传入以前打开的文件的名称,则会重用现有的范围,而不会创建新的数据结构集。 但是,此共享可能会引发问题。

在 .NET Framework 2.0 版中,不再共享 dwOpenFlags 设置为 ofRead 的已打开范围。 通过使用 ofReadOnly 值可允许共享该范围。 当范围处于共享状态时,使用“读/写”元数据接口的查询将失败。

要求

**平台:**请参见 .NET Framework 系统要求

**头文件:**Cor.h

**库:**在 MsCorEE.dll 中用作资源

**.NET Framework 版本:**4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1、1.0

请参见

参考

IMetaDataDispenser 接口

IMetaDataDispenserEx 接口

IMetaDataAssemblyEmit 接口

IMetaDataAssemblyImport 接口

IMetaDataEmit 接口

IMetaDataEmit2 接口

IMetaDataImport 接口

IMetaDataImport2 接口