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 |
---|---|
|
O método foi concluído com sucesso. |
|
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 . |
|
O parâmetro pszItem não identifica um objeto neste contêiner. |
|
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 |