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 宏来打包 riidppv 参数。 此宏基于 ppv 中值指向的接口提供正确的 IID,这消除了可能导致意外结果的 riid 编码错误的可能性。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 shlwapi.h
Library Shlwapi.lib
DLL Shlwapi.dll (5.0 或更高版本)