Поделиться через


Метод IDataObject::GetData (objidl.h)

Вызывается потребителем данных для получения данных из исходного объекта данных. Метод GetData отрисовывает данные, описанные в указанной структуре FORMATETC , и передает их через указанную структуру STGMEDIUM . Затем вызывающий объект берет на себя ответственность за освобождение структуры STGMEDIUM .

Синтаксис

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

Параметры

[in] pformatetcIn

Указатель на структуру FORMATETC , которая определяет формат, среду и целевое устройство, используемое при передаче данных. С помощью логического оператора OR можно задать более одной среды передачи, разрешив методу выбирать лучшую среду передачи среди заданных.

[out] pmedium

Указатель на структуру STGMEDIUM , указывающий на носитель хранения, содержащий возвращаемые данные через элемент tymed, и ответственность за освобождение среды через значение ее элемента pUnkForRelease . Если pUnkForRelease имеет значение NULL, получатель среды отвечает за его освобождение; в противном случае pUnkForRelease указывает на IUnknown в соответствующем объекте, чтобы можно было вызвать его метод Release . Среда должна быть выделена и заполнена с помощью GetData.

Возвращаемое значение

Этот метод возвращает значение S_OK при успешном завершении. Ниже перечислены другие возможные значения.

Код возврата Описание
DV_E_LINDEX
Недопустимое значение для lindex ; В настоящее время поддерживается только -1.
DV_E_FORMATETC
Недопустимое значение pformatetcIn .
DV_E_TYMED
Недопустимое значение tymed .
DV_E_DVASPECT
Недопустимое значение dwAspect .
OLE_E_NOTRUNNING
Объектное приложение не запущено.
STG_E_MEDIUMFULL
Произошла ошибка при выделении носителя.
E_UNEXPECTED
Произошла непредвиденная ошибка.
E_INVALIDARG
Недопустимое значение dwDirection .
E_OUTOFMEMORY
Недостаточно доступной памяти для этой операции.

Комментарии

Потребитель данных вызывает GetData для получения данных из объекта данных, передаваемых через среду хранения (определяемую структурой STGMEDIUM ).

Примечания к вызывающим абонентам

С помощью логического оператора OR можно указать несколько допустимых симированных сред. GetData должен выбрать из значений OR, которые лучше всего представляют данные, выполнить выделение и указать ответственность за освобождение среды.

Данные, передаваемые через поток, простираются от нулевого положения указателя потока до позиции непосредственно перед текущим указателем потока (то есть положение указателя потока при выходе).

Примечания для разработчиков

GetData должен проверка все поля в структуре FORMATETC. Важно, чтобы GetData отрисовыл запрошенный аспект и, по возможности, использовал запрошенный носитель. Если объект данных не может соответствовать сведениям, указанным в FORMATETC, метод должен вернуть DV_E_FORMATETC. Если попытка выделить среду завершается сбоем, метод должен вернуть STG_E_MEDIUMFULL. Важно заполнить все поля в структуре STGMEDIUM .

Хотя вызывающий объект может указать несколько носителей для возврата данных, GetData может предоставить только один носитель. Если начальная передача завершается сбоем с выбранным носителем, этот метод можно реализовать, чтобы попробовать один из других указанных носителей перед возвратом ошибки.

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header objidl.h

См. также раздел

Idataobject