Share via


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

Lo llama un consumidor de datos para obtener datos de un objeto de datos de origen. Este método difiere del método GetData en que el autor de la llamada debe asignar y liberar el medio de almacenamiento especificado.

Sintaxis

HRESULT GetDataHere(
  [in]      FORMATETC *pformatetc,
  [in, out] STGMEDIUM *pmedium
);

Parámetros

[in] pformatetc

Puntero a la estructura FORMATETC que define el formato, el medio y el dispositivo de destino que se usará al pasar los datos. Solo se puede especificar un medio en tymed y solo los valores siguientes son válidos: TYMED_ISTORAGE, TYMED_ISTREAM, TYMED_HGLOBAL o TYMED_FILE.

[in, out] pmedium

Puntero a la estructura STGMEDIUM que define el medio de almacenamiento que contiene los datos que se transfieren. GetDataHere debe asignar el medio y rellenarlo. El llamador también debe liberar el medio. La implementación de este método siempre debe proporcionar un valor NULL para el miembro punkForRelease de la estructura STGMEDIUM a la que apunta este parámetro.

Valor devuelto

Este método devuelve S_OK cuando funciona correctamente. Otros valores posibles son los siguientes.

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 pformatetc 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 parámetro dwDirection no es válido.
E_OUTOFMEMORY
No había suficiente memoria disponible para esta operación.

Comentarios

El método GetDataHere es similar a IDataObject::GetData, salvo que el autor de la llamada debe asignar y liberar el medio especificado en pmedium. GetDataHere representa los datos descritos en una estructura FORMATETC y copia los datos en esa estructura STGMEDIUM proporcionada por el autor de la llamada. Por ejemplo, si el medio es TYMED_HGLOBAL, este método no puede cambiar el tamaño del medio ni asignar un nuevo hGlobal.

Algunos medios no son adecuados en una llamada a GetDataHere, incluidos los tipos GDI, como los metarchivos. El método GetDataHere no puede colocar datos en un metarchivo proporcionado por el autor de la llamada. En general, los únicos medios de almacenamiento que es necesario admitir en este método son TYMED_ISTORAGE, TYMED_ISTREAM y TYMED_FILE.

Cuando el medio de transferencia es una secuencia, OLE realiza suposiciones sobre dónde se devuelven los datos y la posición del puntero de búsqueda de la secuencia. En una llamada GetData , los datos devueltos son de la posición cero de la secuencia hasta justo antes del puntero de búsqueda actual de la secuencia (es decir, la posición en la salida). Para GetDataHere, los datos devueltos proceden de la posición de la secuencia en la entrada justo antes de la posición en la salida.

Requisitos

   
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