PROPSETFLAG 常量

PROPSETFLAG 常量定义属性集的特征。 下表中列出的值用于 IPropertySetStorage 方法的 grfFlags 参数、StgCreatePropStg 函数和 StgOpenPropStg 函数。

常量/值 说明
PROPSETFLAG_DEFAULT
0
如果未指定,则默认情况下,只能将简单的属性值写入属性集。 使用简单属性值可防止在复合文件和 IPropertySetStorage 的独立实现中处理属性集。 非 e 属性值必须用于此目的。
PROPSETFLAG_NONSIMPLE
1
如果指定,则可以将非简单属性值写入属性集,并将属性集保存在存储对象中。 非简单属性值包括 VARTYPE 为VT_STORAGE、VT_STREAM、VT_STORED_OBJECT或VT_STREAMED_OBJECT。 如果未指定此标志,则无法将非简单类型写入属性集。 在复合文件和独立实现中,仅当指定 了PROPSETFLAG_NONSIMPLE 时,才能处理属性集。
PROPSETFLAG_ANSI
2
如果指定,则不是显式 Unicode 的属性集中的所有字符串值(即除VT_LPWSTR以外的值)都随当前系统 ANSI 代码页一起存储。 有关详细信息,请参阅 GetACP。 不建议使用此值。 有关详细信息,请参阅“备注”。
如果此值不存在,则新属性集中的字符串值存储在 Unicode 中。 此值提供的控制程度是必需的,以便使用与属性相关的接口的客户端可以与标准属性集(如 OLE2 摘要信息)互操作,这些信息可能存在于 ANSI 代码页中。
PROPSETFLAG_UNBUFFERED
4
仅用于 StgCreatePropStgStgOpenPropStg 函数;也就是说,在属性集接口的独立实现中。 如果在这些函数中指定,则不会缓冲对属性集的更改。 相反,更改始终直接写入属性集。 对属性集 IPropertyStorage 方法的调用将更改它。 但是,默认情况下,更改将缓冲在内部属性集缓存中,并在调用 IPropertyStorage::Commit 方法时写入属性集。
设置 PROPSETFLAG_UNBUFFERED 会降低性能,因为属性集内部缓冲区会在每次更改属性集后自动刷新。 但是,直接编写更改将阻止协调问题。 例如,如果存储对象以事务处理模式打开,并且将缓冲属性集。 然后,如果在存储对象上调用 IStorage::Commit 方法,属性集更改将不会作为事务的一部分进行选取,因为它们位于尚未刷新的缓冲区中。 在调用 IStorage::提交之前,必须先调用 IPropertyStorage::Commit 才能刷新属性集缓冲区,然后再将更改提交到存储。 作为进行两次调用的替代方法,可以设置 PROPSETFLAG_UNBUFFERED ,以便始终将更改直接写入属性集,并且永远不会在属性集的内部缓存中缓冲。 然后,提交事务处理存储时,将选取更改。
PROPSETFLAG_CASE_SENSITIVE
8
如果指定,属性名称区分大小写。 区分大小写的属性名称只能在版本 1 属性集序列化格式中使用。 有关详细信息,请参阅 属性集序列化

注解

可以使用按位操作设置和检查这些值,以确定如何创建和打开属性集。 属性集是使用 IPropertySetStorage::Create 方法或 StgCreatePropStg 函数创建的。 它们使用 IPropertySetStorage::Open 方法或 StgOpenPropStg 函数打开。

建议不要在 grfFlags 参数中设置PROPSETFLAG_ANSI标志,将属性集创建为 Unicode。 此外,建议避免使用VT_LPSTR值,并改用VT_LPWSTR值。 当属性集代码页为 Unicode 时,VT_LPSTR字符串值在存储时转换为 Unicode,并在检索时转换为多字节字符串值。 当属性集的代码页不是 Unicode 时,属性名称、VT_BSTR字符串和非简单属性值在存储时转换为多字节字符串,并在检索时转换回 Unicode,全部使用当前系统 ANSI 代码页。

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Propidl.h

另请参阅

FmtIdToPropStgName

IPropertySetStorage::Create

IPropertySetStorage::Open

PropStgNameToFmtId

StgCreatePropSetStg

StgCreatePropStg

StgOpenPropStg