Partager via


IDataObject::GetDataHere, méthode (objidl.h)

Appelé par un consommateur de données pour obtenir des données à partir d’un objet de données source. Cette méthode diffère de la méthode GetData en ce que l’appelant doit allouer et libérer le support de stockage spécifié.

Syntaxe

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

Paramètres

[in] pformatetc

Pointeur vers la structure FORMATETC qui définit le format, le support et l’appareil cible à utiliser lors du passage des données. Un seul support peut être spécifié dans tymed, et seules les valeurs suivantes sont valides : TYMED_ISTORAGE, TYMED_ISTREAM, TYMED_HGLOBAL ou TYMED_FILE.

[in, out] pmedium

Pointeur vers la structure STGMEDIUM qui définit le support de stockage contenant les données transférées. Le support doit être alloué par l’appelant et renseigné par GetDataHere. L'appelant doit également libérer le support. L’implémentation de cette méthode doit toujours fournir une valeur NULL pour le membre punkForRelease de la structure STGMEDIUM vers laquelle ce paramètre pointe.

Valeur retournée

Cette méthode retourne S_OK en cas de réussite. Les autres valeurs possibles sont les suivantes.

Code de retour Description
DV_E_LINDEX
La valeur de lindex n’est pas valide ; Actuellement, seul -1 est pris en charge.
DV_E_FORMATETC
La valeur de pformatetc n’est pas valide.
DV_E_TYMED
La valeur liée n’est pas valide.
DV_E_DVASPECT
La valeur dwAspect n’est pas valide.
OLE_E_NOTRUNNING
L’application objet n’est pas en cours d’exécution.
STG_E_MEDIUMFULL
Une erreur s’est produite lors de l’allocation du support.
E_UNEXPECTED
Une erreur inattendue s’est produite.
E_INVALIDARG
Le paramètre dwDirection n’est pas valide.
E_OUTOFMEMORY
La mémoire disponible était insuffisante pour cette opération.

Notes

La méthode GetDataHere est similaire à IDataObject::GetData, sauf que l’appelant doit à la fois allouer et libérer le support spécifié dans pmedium. GetDataHere restitue les données décrites dans une structure FORMATETC et copie les données dans cette structure STGMEDIUM fournie par l’appelant . Par exemple, si le support est TYMED_HGLOBAL, cette méthode ne peut pas redimensionner le support ni allouer un nouveau hGlobal.

Certains médias ne sont pas appropriés dans un appel à GetDataHere, y compris les types GDI tels que les métafichiers. La méthode GetDataHere ne peut pas placer de données dans un métafichier fourni par l’appelant. En général, les seuls supports de stockage qu’il est nécessaire de prendre en charge dans cette méthode sont TYMED_ISTORAGE, TYMED_ISTREAM et TYMED_FILE.

Lorsque le support de transfert est un flux, OLE fait des hypothèses sur l’emplacement où les données sont retournées et la position du pointeur de recherche du flux. Dans un appel GetData , les données retournées sont à partir de la position de flux de zéro à juste avant le pointeur de recherche actuel du flux (c’est-à-dire la position à la sortie). Pour GetDataHere, les données retournées proviennent de la position du flux à l’entrée et juste avant la position à la sortie.

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête objidl.h

Voir aussi

Idataobject