Método IOleItemContainer::GetObject (oleidl.h)

Recupera um ponteiro para o objeto especificado.

Sintaxe

HRESULT GetObject(
  [in]  LPOLESTR pszItem,
  [in]  DWORD    dwSpeedNeeded,
  [in]  IBindCtx *pbc,
  [in]  REFIID   riid,
  [out] void     **ppvObject
);

Parâmetros

[in] pszItem

O nome do contêiner para o objeto solicitado.

[in] dwSpeedNeeded

Indica aproximadamente quanto tempo o chamador aguardará para obter o objeto. Os valores possíveis são obtidos da enumeração BINDSPEED.

[in] pbc

Um ponteiro para a interface IBindCtx no objeto de contexto de associação a ser usado nesta operação de associação. O contexto de associação armazena em cache objetos associados durante o processo de associação, contém parâmetros que se aplicam a todas as operações usando o contexto de associação e fornece os meios pelos quais a implementação de associação deve recuperar informações sobre seu ambiente.

[in] riid

Uma referência ao identificador do ponteiro de interface solicitado.

[out] ppvObject

Endereço da variável de ponteiro que recebe o ponteiro de interface solicitado em riid. Após o retorno bem-sucedido, *ppvObject contém o ponteiro de interface solicitado para o objeto chamado por pszItem. Quando bem-sucedida, a implementação deve chamar AddRef no *ppvObject; é responsabilidade do chamador chamar Release. Se ocorrer um erro, a implementação definirá *ppvObject comoNULL.

Retornar valor

Esse método pode retornar o valor de retorno padrão E_OUTOFMEMORY, bem como os valores a seguir.

Código de retorno Descrição
S_OK
O método foi concluído com sucesso.
MK_E_EXCEEDEDDEADLINE
A operação de associação não pôde ser concluída dentro do limite de tempo especificado pela estrutura BIND_OPTS do contexto de associação ou com a velocidade indicada pelo parâmetro dwSpeedNeeded .
MK_E_NOOBJECT
O parâmetro pszItem não identifica um objeto neste contêiner.
E_NOINTERFACE
A interface solicitada não estava disponível.

Comentários

A implementação do moniker de item de IMoniker::BindToObject chama esse método, passando o nome armazenado no moniker de item como o parâmetro pszItem .

Anotações aos implementadores

Sua implementação de IOleItemContainer::GetObject deve primeiro determinar se pszItem é um nome válido para um dos objetos do contêiner. Caso contrário, você deve retornar MK_E_NOOBJECT.

Se pszItem nomeia um objeto inserido ou vinculado, sua implementação deve marcar o valor do parâmetro dwSpeedNeeded. Se o valor for BINDSPEED_IMMEDIATE e o objeto ainda não estiver carregado, você deverá retornar MK_E_EXCEEDEDDEADLINE. Se o objeto for carregado, sua implementação deverá determinar se o objeto está em execução (por exemplo, chamando a função OleIsRunning ). Se ele não estiver em execução e o valor dwSpeedNeeded for BINDSPEED_MODERATE, sua implementação deverá retornar MK_E_EXCEEDEDDEADLINE. Se o objeto não estiver em execução e dwSpeedNeeded for BINDSPEED_INDEFINITE, sua implementação deverá chamar a função OleRun para colocar o objeto no estado em execução. Em seguida, ele pode consultar o objeto para a interface solicitada. Observe que é importante que o objeto esteja em execução antes de consultar a interface.

Se pszItem nomeia um pseudo-objeto, sua implementação pode ignorar o parâmetro dwSpeedNeeded porque um pseudo-objeto está em execução sempre que o contêiner estiver em execução. Nesse caso, sua implementação pode simplesmente consultar a interface solicitada.

Se você precisar de informações mais específicas sobre o limite de tempo do que é dado por dwSpeedNeeded, poderá chamar IBindCtx::GetBindOptions no parâmetro pbc para obter o parâmetro de prazo real.

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 oleidl.h

Confira também

Ioleitemcontainer