SHGetViewStatePropertyBag 函数 (shlwapi.h)
[SHGetViewStatePropertyBag 可用于“要求”部分中指定的操作系统。 在后续版本中,它可能已更改或不可用。]
检索可在其中存储并随后检索文件夹的视图状态信息的属性包。 当用户下次访问文件夹时,将保留用户的设置。
语法
LWSTDAPI SHGetViewStatePropertyBag(
[in, optional] PCIDLIST_ABSOLUTE pidl,
[in, optional] PCWSTR pszBagName,
DWORD dwFlags,
[in] REFIID riid,
[out] void **ppv
);
参数
[in, optional] pidl
类型: PCIDLIST_ABSOLUTE
要为其请求属性的文件夹的 PIDL。 如果传递了SHGVSPB_ALLFOLDERS标志,此参数必须为 NULL 。
[in, optional] pszBagName
类型: PCWSTR
指向包含所请求属性包名称的字符串的指针。
dwFlags
类型:DWORD
一个 值,该值指定以下标志的组合。
需要以下标志集中的一个值。
SHGVSPB_PERUSER
返回指定 pidl 的每用户属性。
SHGVSPB_ALLUSERS
返回指定 pidl 的“所有用户”属性。
需要以下标志集中的一个值。
SHGVSPB_PERFOLDER
返回 pidl 参数指定的文件夹的属性包。
SHGVSPB_ALLFOLDERS
返回适用于所有文件夹的属性包。
SHGVSPB_INHERIT
返回属性包,该属性包用于为没有属性包的子文件夹提供默认值。
以下标志是可选的。
SHGVSPB_ROAM
允许属性包漫游。 请参阅 漫游用户配置文件。 此标志不能与SHGVSPB_ALLFOLDERS组合使用。
SHGVSPB_NOAUTODEFAULTS
当找不到指定文件夹的属性包时,取消搜索合适的默认值。 默认情况下,如果未指定SHGVSPB_INHERIT,并且找不到指定文件夹的属性包,系统会在可能能够提供默认值的其他位置搜索名称相同的属性包。 例如,系统在文件夹的上级中搜索,以查看其中是否有任何提供SHGVSPB_INHERIT属性包。 系统搜索的其他位置位于用户默认值和全局默认值中。
以下一组标志由组合了上面列出的某些标志的值组成,这些值用于简洁和方便。
SHGVSPB_FOLDER
将SHGVSPB_PERUSER和SHGVSPB_PERFOLDER组合在一起。
SHGVSPB_FOLDERNODEFAULTS
将SHGVSPB_PERUSER、SHGVSPB_PERFOLDER和SHGVSPB_NOAUTODEFAULTS组合在一起。
SHGVSPB_USERDEFAULTS
将SHGVSPB_PERUSER和SHGVSPB_ALLFOLDERS组合在一起。
SHGVSPB_GLOBALDEFAULTS
将SHGVSPB_ALLUSERS和SHGVSPB_ALLFOLDERS组合在一起。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 此标志名为 SHGVSPB_GLOBALDEAFAULTS。
[in] riid
类型: REFIID
对要通过 ppv 检索的接口的 IID 的引用。
[out] ppv
类型: void**
此方法成功返回时,包含 riid 中请求的接口指针。
返回值
类型: HRESULT
如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
不应将关键信息存储在视图状态属性包中,因为系统只保留有限数量的视图状态。 如果某个文件夹长时间未访问,其视图状态最终会被删除。
建议使用 objbase.h 中定义的 IID_PPV_ARGS 宏来打包 riid 和 ppv 参数。 此宏基于 ppv 中值指向的接口提供正确的 IID,这消除了可能导致意外结果的 riid 编码错误的可能性。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | shlwapi.h |
Library | Shlwapi.lib |
DLL | Shlwapi.dll (5.0 或更高版本) |