SHGetDataFromIDListW 函数 (shlobj_core.h)

从相对标识符列表中检索扩展属性数据。

语法

SHSTDAPI SHGetDataFromIDListW(
  [in]  IShellFolder    *psf,
  [in]  PCUITEMID_CHILD pidl,
        int             nFormat,
  [out] void            *pv,
        int             cb
);

参数

[in] psf

类型: IShellFolder*

IShellFolder 接口的地址。 这必须是 pidl 参数引用的 ITEMIDLIST 结构的直接父级。

[in] pidl

类型: PCUITEMID_CHILD

指向 ITEMIDLIST 结构的指针,该结构标识相对于 psf 中指定的文件夹的对象。

nFormat

类型: int

请求数据的格式。 此参数必须设置为以下值之一。

SHGDFIL_FINDDATA

用于文件系统对象的格式。 pv 参数是WIN32_FIND_DATA结构的地址。

SHGDFIL_NETRESOURCE

用于网络资源的格式。 pv 参数是 NETRESOURCE 结构的地址。

SHGDFIL_DESCRIPTIONID

版本 4.71。 用于网络资源的格式。 pv 参数是 SHDESCRIPTIONID 结构的地址。

[out] pv

类型: void*

指向缓冲区的指针,当此函数成功返回时,该缓冲区接收请求的数据。 此缓冲区的格式由 nFormat 确定。

如果 nFormat是SHGDFIL_NETRESOURCE,则有两种可能的情况。 如果缓冲区足够大,则网络资源的字符串信息 (字段的网络名称、本地名称、提供程序和注释) 将放入缓冲区中。 如果缓冲区不够大,则只会将 net 资源结构放入缓冲区中,字符串信息指针将为 NULL

cb

类型: int

pv 上的缓冲区大小(以字节为单位)。

返回值

类型: HRESULT

如果成功,则返回S_OK,否则返回E_INVALIDARG。

注解

此函数仅提取指向 PIDL) 项标识符列表 (指针中的信息。 由于 PIDL 的内容取决于创建 PIDL 的文件夹对象,因此无法保证所有请求的信息都可用。 此外,返回的信息反映创建 PIDL 时对象的状态。 对象的当前状态可能不同。 例如,如果将 nFormat 设置为 SHGDFIL_FINDDATA,函数可能会仅将有意义的值分配给 WIN32_FIND_DATA 结构的一些成员。 其余成员将设置为零。 若要检索文件系统文件或文件夹的完整当前信息,请使用标准文件系统函数,例如 GetFileTimeFindFirstFile

如果 psfpidlpvcb 参数与 nFormat 参数不匹配,或者 nFormat 不是上面所示的特定SHGDFIL_值之一,则返回E_INVALIDARG。

注意

shlobj_core.h 标头将 SHGetDataFromIDList 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 shlobj_core.h (包括 Shlobj.h、Shlobj_core.h)
Library Shell32.lib
DLL Shell32.dll (版本 4.0 或更高版本)
API 集 Windows 10版本 10.0.10240 中引入的 ext-ms-win-shell-shell32-l1-2-1 ()