Compartilhar via


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

Chamado por um consumidor de dados para obter dados de um objeto de dados de origem. Esse método difere do método GetData em que o chamador deve alocar e liberar o meio de armazenamento especificado.

Sintaxe

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

Parâmetros

[in] pformatetc

Um ponteiro para a estrutura FORMATETC que define o formato, o dispositivo médio e de destino a ser usado ao passar os dados. Somente um meio pode ser especificado em tymed e somente os seguintes valores são válidos: TYMED_ISTORAGE, TYMED_ISTREAM, TYMED_HGLOBAL ou TYMED_FILE.

[in, out] pmedium

Um ponteiro para a estrutura STGMEDIUM que define o meio de armazenamento que contém os dados que estão sendo transferidos. O meio deve ser alocado pelo chamador e preenchido por GetDataHere. O chamador também deve liberar o meio. A implementação desse método deve sempre fornecer um valor nulo para o membro punkForRelease da estrutura STGMEDIUM à qual esse parâmetro aponta.

Valor retornado

Esse método retorna S_OK com êxito. Outros valores possíveis incluem o seguinte.

Código de retorno Descrição
DV_E_LINDEX
O valor de lindex não é válido; Atualmente, há suporte apenas para -1.
DV_E_FORMATETC
O valor de pformatetc não é válido.
DV_E_TYMED
O valor de tymed não é válido.
DV_E_DVASPECT
O valor dwAspect não é válido.
OLE_E_NOTRUNNING
O aplicativo de objeto não está em execução.
STG_E_MEDIUMFULL
Ocorreu um erro ao alocar o meio.
E_UNEXPECTED
Ocorreu um erro inesperado.
E_INVALIDARG
O parâmetro dwDirection não é válido.
E_OUTOFMEMORY
Não havia memória suficiente disponível para esta operação.

Comentários

O método GetDataHere é semelhante a IDataObject::GetData, exceto que o chamador deve alocar e liberar o meio especificado no pmedium. GetDataHere renderiza os dados descritos em uma estrutura FORMATETC e copia os dados para essa estrutura STGMEDIUM fornecida pelo chamador. Por exemplo, se o meio for TYMED_HGLOBAL, esse método não poderá redimensionar o meio ou alocar um novo hGlobal.

Algumas mídias não são apropriadas em uma chamada para GetDataHere, incluindo tipos de GDI, como metafiles. O método GetDataHere não pode colocar dados em um metarquivo fornecido pelo chamador. Em geral, a única mídia de armazenamento que é necessária para dar suporte nesse método são TYMED_ISTORAGE, TYMED_ISTREAM e TYMED_FILE.

Quando o meio de transferência é um fluxo, o OLE faz suposições sobre onde os dados estão sendo retornados e a posição do ponteiro de busca do fluxo. Em uma chamada GetData , os dados retornados são da posição do fluxo zero até pouco antes do ponteiro de busca atual do fluxo (ou seja, a posição na saída). Para GetDataHere, os dados retornados são da posição do fluxo na entrada até pouco antes da posição na saída.

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho objidl.h

Confira também

Idataobject