Compartir a través de


Método IDataObject::GetData (objidl.h)

Llamado por un consumidor de datos para obtener datos de un objeto de datos de origen. El método GetData representa los datos descritos en la estructura FORMATETC especificada y los transfiere a través de la estructura STGMEDIUM especificada. A continuación, el autor de la llamada asume la responsabilidad de liberar la estructura STGMEDIUM .

Sintaxis

HRESULT GetData(
  [in]  FORMATETC *pformatetcIn,
  [out] STGMEDIUM *pmedium
);

Parámetros

[in] pformatetcIn

Puntero a la estructura FORMATETC que define el formato, el medio y el dispositivo de destino que se van a usar al pasar los datos. Es posible especificar más de un medio utilizando el operador booleano OR, lo que permite al método elegir el mejor medio entre los especificados.

[out] pmedium

Puntero a la estructura STGMEDIUM que indica el medio de almacenamiento que contiene los datos devueltos a través de su miembro tymed y la responsabilidad de liberar el medio a través del valor de su miembro pUnkForRelease . Si pUnkForRelease es NULL, el receptor del medio es responsable de liberarlo; de lo contrario, pUnkForRelease apunta al IUnknown en el objeto adecuado para que se pueda llamar a su método Release . GetData debe asignar y rellenar el medio.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros valores posibles incluyen lo siguiente.

Código devuelto Descripción
DV_E_LINDEX
El valor de lindex no es válido; actualmente, solo se admite -1.
DV_E_FORMATETC
El valor de pformatetcIn no es válido.
DV_E_TYMED
El valor tymed no es válido.
DV_E_DVASPECT
El valor dwAspect no es válido.
OLE_E_NOTRUNNING
La aplicación de objeto no se está ejecutando.
STG_E_MEDIUMFULL
Error al asignar el medio.
E_UNEXPECTED
Se produjo un error inesperado.
E_INVALIDARG
El valor dwDirection no es válido.
E_OUTOFMEMORY
No había memoria suficiente disponible para esta operación.

Comentarios

Un consumidor de datos llama a GetData para recuperar datos de un objeto de datos, transmitidos a través de un medio de almacenamiento (definido a través de la estructura STGMEDIUM ).

Notas a los autores de llamadas

Puede especificar más de un medio tymed aceptable con el operador OR booleano. GetData debe elegir entre los valores OR del medio que mejor represente los datos, realizar la asignación e indicar la responsabilidad de liberar el medio.

Los datos transferidos a través de una secuencia se extienden desde la posición cero del puntero de flujo hasta la posición inmediatamente antes del puntero de flujo actual (es decir, la posición del puntero de flujo tras la salida).

Notas para los implementadores

GetData debe comprobar todos los campos de la estructura FORMATETC . Es importante que GetData represente el aspecto solicitado y, si es posible, use el medio solicitado. Si el objeto de datos no puede cumplir la información especificada en el FORMATETC, el método debe devolver DV_E_FORMATETC. Si se produce un error al intentar asignar el medio, el método debe devolver STG_E_MEDIUMFULL. Es importante rellenar todos los campos de la estructura STGMEDIUM .

Aunque el autor de la llamada puede especificar más de un medio para devolver los datos, GetData solo puede proporcionar un medio. Si se produce un error en la transferencia inicial con el medio seleccionado, este método se puede implementar para probar uno de los demás medios especificados antes de devolver un error.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado objidl.h

Consulte también

IDataObject