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 值可允许共享作用域。 共享作用域时,使用“读/写”元数据接口的查询会失败。

要求

平台:请参阅系统要求

标头:Cor.h

库:用作 MsCorEE.dll 中的资源

.NET Framework 版本:自 1.0 起可用

另请参阅