Compartir a través de


Función SHCreateDataObject (shlobj_core.h)

Crea un objeto de datos en una carpeta primaria.

Sintaxis

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
);

Parámetros

[in, optional] pidlFolder

Tipo: PCIDLIST_ABSOLUTE

Puntero a un ITEMIDLIST (PIDL) de la carpeta primaria que contiene el objeto de datos.

[in] cidl

Tipo: UINT

Número de objetos de archivo o subcarpetas especificados en el parámetro apidl .

[in, optional] apidl

Tipo: PCUITEMID_CHILD_ARRAY

Matriz de punteros a estructuras ITEMIDLIST constantes, cada una de las cuales identifica de forma única un objeto de archivo o subcarpeta en relación con la carpeta primaria. Cada lista de identificadores de elemento debe contener exactamente una estructura SHITEMID seguida de un terminación cero.

[in, optional] pdtInner

Tipo: IDataObject*

Puntero a la interfaz IDataObject. Este parámetro puede ser NULL. Especifique pdtInner solo si el objeto de datos creado necesita admitir formatos de Portapapeles FORMATETC adicionales más allá de los formatos predeterminados que se asignan al crear. Como alternativa, proporcione compatibilidad para rellenar el objeto de datos creado mediante formatos de Portapapeles no predeterminados llamando al método IDataObject::SetData y especificando el formato en la estructura FORMATETC pasada en el parámetro pFormatetc.

[in] riid

Tipo: REFIID

Referencia al IID de la interfaz que se va a recuperar a través de ppv. Debe ser IID_IDataObject.

[out] ppv

Tipo: void**

Cuando este método vuelve correctamente, contiene el puntero de interfaz IDataObject solicitado en riid.

Valor devuelto

Tipo: HRESULT

Si esta función se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

Normalmente, se llama a esta función al implementar el método IShellFolder::GetUIObjectOf. Cuando se solicita un puntero de interfaz del identificador de interfaz IID_IDataObject (mediante el parámetro riid), el implementador puede devolver el puntero de interfaz en el objeto creado con SHCreateDataObject en respuesta.

Esta función admite el formato de portapapeles de CFSTR_SHELLIDLIST (también conocido como HIDA) y también tiene compatibilidad genérica con formatos arbitrarios del Portapapeles a través de IDataObject::SetData. Para obtener más información sobre los formatos del Portapapeles, consulte Formatos del Portapapeles de Shell.

El nuevo objeto de datos está pensado para usarse en operaciones como arrastrar y colocar, en las que los datos se almacenan en el Portapapeles con un formato determinado.

Se recomienda usar la macro IID_PPV_ARGS , definida en Objbase.h, para empaquetar los parámetros riid y ppv . Esta macro proporciona el IID correcto basado en la interfaz a la que apunta el valor en ppv, lo que elimina la posibilidad de un error de codificación en riid que podría dar lugar a resultados inesperados.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shlobj_core.h (incluya Shlobj.h)
Archivo DLL Shell32.dll
Conjunto de API ext-ms-win-shell-shell32-l1-2-2 (introducido en Windows 10, versión 10.0.14393)

Consulte también

CIDLData_CreateFromIDArray