Поделиться через


Функция 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. Укажите pdtInner , только если созданный объект данных должен поддерживать дополнительные форматы буфера обмена FORMATETC , выходящие за рамки форматов по умолчанию, назначенных при создании. Кроме того, можно обеспечить поддержку заполнения созданного объекта данных с помощью форматов буфера обмена, отличных от форматов буфера обмена по умолчанию, путем вызова метода IDataObject::SetData и указания формата в структуре FORMATETC, переданной в параметре pFormatetc.

[in] riid

Тип: REFIID

Ссылка на IID интерфейса, извлекаемого через ppv. Это должно быть IID_IDataObject.

[out] ppv

Тип: void**

При успешном выполнении этого метода содержит указатель интерфейса IDataObject , запрошенный в riid.

Возвращаемое значение

Тип: HRESULT

Если эта функция завершается успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Эта функция обычно вызывается при реализации метода IShellFolder::GetUIObjectOf. При запросе указателя интерфейса IID_IDataObject идентификатора интерфейса (с помощью параметра riid) реализующий объект может в ответ вернуть указатель интерфейса на объект, созданный с помощью SHCreateDataObject .

Эта функция поддерживает формат буфера обмена CFSTR_SHELLIDLIST (также известный как HIDA), а также универсальную поддержку произвольных форматов буфера обмена через IDataObject::SetData. Дополнительные сведения о форматах буфера обмена см. в разделе Форматы буфера обмена оболочки.

Новый объект данных предназначен для использования в таких операциях, как перетаскивание, в которых данные хранятся в буфере обмена в заданном формате.

Мы рекомендуем использовать макрос IID_PPV_ARGS , определенный в Objbase.h, для упаковки параметров riid и ppv . Этот макрос предоставляет правильный IID на основе интерфейса, на который указывает значение в ppv, что исключает возможность ошибки кода в riid , которая может привести к непредвиденным результатам.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header shlobj_core.h (включая Shlobj.h)
DLL Shell32.dll
Набор API ext-ms-win-shell-shell32-l1-2-2 (представлено в Windows 10 версии 10.0.14393)

См. также раздел

CIDLData_CreateFromIDArray