SHCreateDataObject 函数 (shlobj_core.h)

在父文件夹中创建数据对象。

Syntax

SHSTDAPI SHCreateDataObject(
  [in, optional] PCIDLIST_ABSOLUTE     pidlFolder,
  [in]           UINT                  cidl,
  [in, optional] PCUITEMID_CHILD_ARRAY apidl,
  [in, optional] IDataObject           *pdtInner,
  [in]           REFIID                riid,
  [out]          void                  **ppv
);

参数

[in, optional] pidlFolder

类型: PCIDLIST_ABSOLUTE

指向包含数据对象的父文件夹 的 ITEMIDLIST (PIDL) 的指针。

[in] cidl

类型: UINT

apidl 参数中指定的文件对象或子文件夹数。

[in, optional] apidl

类型: PCUITEMID_CHILD_ARRAY

指向常量 ITEMIDLIST 结构的指针数组,每个结构唯一标识相对于父文件夹的文件对象或子文件夹。 每个项标识符列表必须正好包含一个 SHITEMID 结构,后跟终止零。

[in, optional] pdtInner

类型: IDataObject*

指向接口 IDataObject 的指针。 此参数可以为 NULL。 仅当创建的数据对象需要支持除创建时分配的默认格式以外的其他 FORMATETC 剪贴板格式时,才指定 pdtInner。 或者,通过调用方法 IDataObject::SetData 并在参数 pFormatetc 中传递的 FORMATETC 结构中指定格式,为使用非默认剪贴板格式填充已创建的数据对象提供支持。

[in] riid

类型: REFIID

对要通过 ppv 检索的接口的 IID 的引用。 这必须IID_IDataObject。

[out] ppv

类型: void**

此方法成功返回时,包含 riid 中请求的 IDataObject 接口指针。

返回值

类型:HRESULT

如果此函数成功,它将返回 S_OK。 否则,它将返回 HRESULT 错误代码。

注解

实现方法 IShellFolder::GetUIObjectOf 时,通常会调用此函数。 当请求接口 ID 的接口指针IID_IDataObject(使用参数 riid),实现者可以在响应中使用 SHCreateDataObject 创建的对象上返回接口指针。

此函数支持 CFSTR_SHELLIDLIST (也称为 HIDA)剪贴板格式,还支持通过 IDataObject::SetData 对任意剪贴板格式的通用支持。 有关剪贴板格式的详细信息,请参阅 Shell 剪贴板格式。

新数据对象用于拖放等作,其中数据以给定格式存储在剪贴板中。

建议使用在 Objbase.h 中定义的 IID_PPV_ARGS 宏来打包 riidppv 参数。 此宏基于 ppv 中值指向的接口提供正确的 IID,从而消除了 riid 中编码错误可能导致意外结果的可能性。

要求

Requirement 价值
最低支持的客户端 Windows Vista [仅限桌面应用]
支持的最低服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows操作系统
Header shlobj_core.h (包括 Shlobj.h)
Library OneCore.Lib
DLL Shell32.dll
API 集 ext-ms-win-shell-shell32-l1-2-2 (在 Windows 10 版本 10.0.14393 中引入)

另请参阅

CIDLData_CreateFromIDArray