Condividi tramite


Metodo IDataObject::GetDataHere (objidl.h)

Chiamato da un consumer di dati per ottenere dati da un oggetto dati di origine. Questo metodo differisce dal metodo GetData in quanto il chiamante deve allocare e liberare il supporto di archiviazione specificato.

Sintassi

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

Parametri

[in] pformatetc

Puntatore alla struttura FORMATETC che definisce il formato, il supporto e il dispositivo di destinazione da usare durante il passaggio dei dati. È possibile specificare un solo supporto in tymed e solo i valori seguenti sono validi: TYMED_ISTORAGE, TYMED_ISTREAM, TYMED_HGLOBAL o TYMED_FILE.

[in, out] pmedium

Puntatore alla struttura STGMEDIUM che definisce il supporto di archiviazione contenente i dati trasferiti. Il supporto deve essere allocato dal chiamante e compilato da GetDataHere. Il chiamante deve anche liberare il supporto. L'implementazione di questo metodo deve sempre fornire un valore NULL per il membro punkForRelease della struttura STGMEDIUM a cui punta questo parametro.

Valore restituito

Questo metodo restituisce S_OK se l'operazione ha esito positivo. Altri valori possibili includono quanto segue.

Codice restituito Descrizione
DV_E_LINDEX
Il valore per lindex non è valido; attualmente è supportato solo -1.
DV_E_FORMATETC
Il valore per pformatetc non è valido.
DV_E_TYMED
Il valore tymed non è valido.
DV_E_DVASPECT
Il valore dwAspect non è valido.
OLE_E_NOTRUNNING
L'applicazione oggetto non è in esecuzione.
STG_E_MEDIUMFULL
Errore durante l'allocazione del supporto.
E_UNEXPECTED
Si è verificato un errore imprevisto.
E_INVALIDARG
Il parametro dwDirection non è valido.
E_OUTOFMEMORY
Memoria insufficiente disponibile per questa operazione.

Commenti

Il metodo GetDataHere è simile a IDataObject::GetData, ad eccezione del fatto che il chiamante deve allocare e liberare il supporto specificato in pmedium. GetDataHere esegue il rendering dei dati descritti in una struttura FORMATETC e copia i dati in tale struttura STGMEDIUM fornita dal chiamante. Ad esempio, se il supporto è TYMED_HGLOBAL, questo metodo non può ridimensionare il supporto o allocare un nuovo hGlobal.

Alcuni supporti non sono appropriati in una chiamata a GetDataHere, inclusi i tipi GDI, ad esempio i metafile. Il metodo GetDataHere non può inserire dati in un metafile fornito dal chiamante. In generale, l'unico supporto di archiviazione che è necessario supportare in questo metodo è TYMED_ISTORAGE, TYMED_ISTREAM e TYMED_FILE.

Quando il supporto di trasferimento è un flusso, OLE presuppone dove vengono restituiti i dati e la posizione del puntatore di ricerca del flusso. In una chiamata GetData , i dati restituiti provengono dalla posizione del flusso zero fino a poco prima del puntatore di ricerca corrente del flusso, ovvero la posizione all'uscita. Per GetDataHere, i dati restituiti provengono dalla posizione del flusso all'ingresso appena prima della posizione all'uscita.

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione objidl.h

Vedi anche

Idataobject