SHCreateDataObject 函数 (shlobj_core.h)

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

语法

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 时调用。 当使用参数 riid) (请求接口 ID IID_IDataObject的接口指针时,实现者可以在响应中使用 SHCreateDataObject 创建的对象上返回接口指针。

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

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

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

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 shlobj_core.h (包括 Shlobj.h)
DLL Shell32.dll
API 集 Windows 10版本 10.0.14393 中引入的 ext-ms-win-shell-shell32-l1- (2-2)

另请参阅

CIDLData_CreateFromIDArray