Metodo IDataObject::GetData (objidl.h)

Chiamato da un consumer di dati per ottenere dati da un oggetto dati di origine. Il metodo GetData esegue il rendering dei dati descritti nella struttura FORMATETC specificata e lo trasferisce tramite la struttura STGMEDIUM specificata. Il chiamante presuppone quindi la responsabilità di rilasciare la struttura STGMEDIUM .

Sintassi

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

Parametri

[in] pformatetcIn

Puntatore alla struttura FORMATETC che definisce il formato, il supporto e il dispositivo di destinazione da usare durante il passaggio dei dati. È possibile specificare più supporti usando l'operatore booleano OR, consentendo al metodo di scegliere il supporto ottimale tra quelli specificati.

[out] pmedium

Puntatore alla struttura STGMEDIUM che indica il supporto di archiviazione contenente i dati restituiti tramite il membro tymed e la responsabilità di rilasciare il supporto tramite il valore del relativo membro pUnkForRelease . Se pUnkForRelease è NULL, il ricevitore del supporto è responsabile del rilascio; in caso contrario, pUnkForRelease punta a IUnknown nell'oggetto appropriato in modo che sia possibile chiamare il relativo metodo Release . Il supporto deve essere allocato e compilato da GetData.

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 pformatetcIn non è valido.
DV_E_TYMED
Il valore tymed non è valido.
DV_E_DVASPECT
Il valore dwAspect non è valido.
OLE_E_NOTRUNNING
L'applicazione dell'oggetto non è in esecuzione.
STG_E_MEDIUMFULL
Si è verificato un errore durante l'allocazione del supporto.
E_UNEXPECTED
Si è verificato un errore imprevisto.
E_INVALIDARG
Il valore dwDirection non è valido.
E_OUTOFMEMORY
Memoria insufficiente disponibile per questa operazione.

Commenti

Un consumer di dati chiama GetData per recuperare i dati da un oggetto dati, trasmesso tramite un supporto di archiviazione (definito tramite la struttura STGMEDIUM ).

Note ai chiamanti

È possibile specificare più di un media tymed accettabile con l'operatore OR booleano. GetData deve scegliere tra i valori OR il supporto che rappresenta meglio i dati, eseguire l'allocazione e indicare la responsabilità del rilascio del supporto.

I dati trasferiti in un flusso si estendono dalla posizione zero del puntatore di flusso alla posizione immediatamente prima del puntatore di flusso corrente, ovvero la posizione del puntatore di flusso all'uscita.

Note per gli implementatori

GetData deve controllare tutti i campi nella struttura FORMATETC . È importante che GetData esegue il rendering dell'aspetto richiesto e, se possibile, usa il supporto richiesto. Se l'oggetto dati non è conforme alle informazioni specificate in FORMATETC, il metodo deve restituire DV_E_FORMATETC. Se un tentativo di allocare il supporto ha esito negativo, il metodo deve restituire STG_E_MEDIUMFULL. È importante compilare tutti i campi nella struttura STGMEDIUM .

Anche se il chiamante può specificare più di un media per restituire i dati, GetData può fornire un solo supporto. Se il trasferimento iniziale ha esito negativo con il supporto selezionato, questo metodo può essere implementato per provare uno degli altri supporti specificati prima di restituire un errore.

Requisiti

Requisito Valore
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