IPropertySetStorage::Open 方法 (propidl.h)
Open 方法打开属性集存储对象中包含的属性集。
语法
HRESULT Open(
[in] REFFMTID rfmtid,
[in] DWORD grfMode,
[out] IPropertyStorage **ppprstg
);
参数
[in] rfmtid
要打开的属性集 (FMTID) 的格式标识符。 有关平台 SDK 中已知和预定义的 FMTID 的详细信息,请参阅 预定义的属性集格式标识符。
[in] grfMode
打开新创建的属性集的访问模式。 这些标志取自 STGM 常量。 以下“备注”部分介绍了可能使用的标志及其在此方法上下文中的含义。
[out] ppprstg
指向 IPropertyStorage 指针变量的指针,该变量接收指向请求的属性存储子对象的接口指针。
返回值
此方法支持E_UNEXPECTED的标准返回值,此外还支持以下各项:
注解
参数 grfMode 中指定了打开属性集的模式。 这些标志取自 STGM 常量,但对于此方法,法律值及其含义如下所示 (只有这些标志值的某些组合是合法的) 。
值 | 含义 |
---|---|
STGM_DIRECT | 打开属性集,无需额外的事务嵌套级别。 如果未) 指定STGM_DIRECT或STGM_TRANSACTED,则这是行为的默认 (。 |
STGM_TRANSACTED | 打开属性集,该属性集具有额外的事务嵌套级别, (超出事务(如果有)的属性集,该属性集将存储对象) 。 事务处理模式仅适用于非简单属性集。 必须先通过调用 IPropertyStorage::Commit 提交属性集中的更改,然后才能对此属性集存储上的事务可见。 |
STGM_READ | 打开具有读取访问权限的属性集。 属性集存储需要读取权限。 |
STGM_WRITE | 打开具有写入访问权限的属性集。 并非所有 IPropertyStorage 的实现都支持此模式。 |
STGM_READWRITE | 打开具有读取和写入访问权限的属性集。 请注意,此标志不是STGM_READ和STGM_WRITE值的二进制 OR。 |
STGM_SHARE_DENY_NONE | 从此属性集存储中随后打开的属性集时,不会拒绝读取或写入访问。 (并非在所有实现中都可用。) |
STGM_SHARE_DENY_READ | 从此属性集存储中随后打开的属性集将被拒绝读取访问。 并非在所有实现中都可用。 |
STGM_SHARE_DENY_WRITE | 来自此属性集存储的属性集的后续打开将被拒绝写入访问。 此值通常在事务处理模式下使用,以防止创建由多个用户打开的对象的不必要副本。 也就是说,如果指定了STGM_TRANSACTED,但未指定此值,则无论是否有后续打开,都进行快照。 因此,可以通过指定此值来提高性能。 并非在所有实现中都可用。 |
STGM_SHARE_EXCLUSIVE | 无法从此属性集存储中随后打开属性集。 请注意,此值不是STGM_SHARE_DENY_READ和STGM_SHARE_DENY_WRITE元素的简单二进制 OR。 |
此方法受简单属性集的基础 IStorage::OpenStream (的约束) 或 IStorage::OpenStorage () 非简单属性集的约束。 有关简单和非简单属性集的详细信息,请参阅属性集的存储和Stream对象。 例如,使用 IPropertySetStorage-Compound File Implementation 时,必须将 grfMode 参数中的STGM_SHARE_EXCLUSIVE指定为 IPropertySetStorage::Open。 相反,如果使用 IPropertySetStorage-独立实现, 则 IPropertySetStorage::Open 受适用于调用方指定的 IStorage 的约束。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | propidl.h (包括 Objbase.h) |
Library | Uuid.lib |
DLL | Ole32.dll |