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

Chamado por um consumidor de dados para obter dados de um objeto de dados de origem. O método GetData renderiza os dados descritos na estrutura FORMATETC especificada e os transfere por meio da estrutura STGMEDIUM especificada. Em seguida, o chamador assume a responsabilidade de liberar a estrutura STGMEDIUM .

Sintaxe

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

Parâmetros

[in] pformatetcIn

Um ponteiro para a estrutura FORMATETC que define o formato, o dispositivo médio e de destino a ser usado ao passar os dados. É possível especificar mais de um meio usando o operador OR booliano, permitindo que o método escolha o melhor meio entre aqueles especificados.

[out] pmedium

Um ponteiro para a estrutura STGMEDIUM que indica o meio de armazenamento que contém os dados retornados por meio de seu membro tymed e a responsabilidade de liberar o meio por meio do valor de seu membro pUnkForRelease . Se pUnkForRelease for NULL, o receptor do meio será responsável por liberá-lo; caso contrário, pUnkForRelease aponta para o IUnknown no objeto apropriado para que seu método Release possa ser chamado. O meio deve ser alocado e preenchido por GetData.

Retornar valor

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 pformatetcIn 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 valor dwDirection não é válido.
E_OUTOFMEMORY
Não havia memória suficiente disponível para esta operação.

Comentários

Um consumidor de dados chama GetData para recuperar dados de um objeto de dados, transmitidos por meio de um meio de armazenamento (definido por meio da estrutura STGMEDIUM ).

Anotações para chamadores

Você pode especificar mais de um meio tymed aceitável com o operador OR booliano. GetData deve escolher entre os valores OR'd o meio que melhor representa os dados, fazer a alocação e indicar a responsabilidade pela liberação do meio.

Os dados transferidos por um fluxo estendem-se da posição zero do ponteiro do fluxo até a posição imediatamente antes do ponteiro de fluxo atual (ou seja, a posição do ponteiro de fluxo após a saída).

Anotações aos implementadores

GetData deve marcar todos os campos na estrutura FORMATETC. É importante que GetData renderize o aspecto solicitado e, se possível, use o meio solicitado. Se o objeto de dados não puder estar em conformidade com as informações especificadas no FORMATETC, o método deverá retornar DV_E_FORMATETC. Se uma tentativa de alocar o meio falhar, o método deverá retornar STG_E_MEDIUMFULL. É importante preencher todos os campos na estrutura STGMEDIUM .

Embora o chamador possa especificar mais de um meio para retornar os dados, GetData pode fornecer apenas um meio. Se a transferência inicial falhar com o meio selecionado, esse método poderá ser implementado para experimentar uma das outras mídias especificadas antes de retornar um erro.

Requisitos

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