Função CoGetInstanceFromIStorage (objbase.h)
Cria um novo objeto e o inicializa de um objeto de armazenamento por meio de uma chamada interna para IPersistFile::Load.
Sintaxe
HRESULT CoGetInstanceFromIStorage(
[in, optional] COSERVERINFO *pServerInfo,
[in, optional] CLSID *pClsid,
[in, optional] IUnknown *punkOuter,
[in] DWORD dwClsCtx,
[in] IStorage *pstg,
[in] DWORD dwCount,
[in, out] MULTI_QI *pResults
);
Parâmetros
[in, optional] pServerInfo
Um ponteiro para uma estrutura COSERVERINFO que especifica o computador no qual criar uma instância do objeto e a configuração de autenticação a ser usada. Esse parâmetro pode ser NULL, caso em que o objeto é instanciado no computador atual, no computador especificado sob o valor do registro RemoteServerName para a classe ou no computador em que o objeto de armazenamento pstg reside se o valor ActivateAtStorage for especificado para a classe ou se não houver informações do registro local.
[in, optional] pClsid
Um ponteiro para o identificador de classe do objeto a ser criado. Esse parâmetro pode ser NULL; nesse caso, há uma chamada para IStorage::Stat para localizar a classe do objeto .
[in, optional] punkOuter
Quando não NULL, indica que a instância está sendo criada como parte de uma agregação, e punkOuter deve ser usado como o ponteiro para o IUnknown controlador da nova instância. Não há suporte para agregação entre processos ou entre computadores. Ao instanciar um objeto fora do processo, CLASS_E_NOAGGREGATION será retornado se punkOuter não for NULL.
[in] dwClsCtx
Valores da enumeração CLSCTX .
[in] pstg
Um ponteiro para o objeto de armazenamento usado para inicializar o objeto com IPersistFile::Load. Esse parâmetro não pode ser NULL.
[in] dwCount
O número de estruturas em pResults. Esse parâmetro deve ser maior que 0.
[in, out] pResults
Uma matriz de estruturas MULTI_QI . Cada estrutura tem três membros: o identificador de uma interface solicitada (pIID), o local para retornar o ponteiro da interface (pItf) e o valor retornado da chamada para QueryInterface (hr).
Retornar valor
Essa função pode retornar o valor retornado padrão E_INVALIDARG, bem como os valores a seguir.
Código de retorno | Descrição |
---|---|
|
A função recuperou todas as interfaces com êxito. |
|
Pelo menos uma, mas nem todas as interfaces solicitadas na matriz pResults foram recuperadas com êxito. O membro hr de cada uma das estruturas de MULTI_QI indica com S_OK ou E_NOINTERFACE se a interface específica foi retornada. |
|
Nenhuma das interfaces solicitadas na matriz pResults foi recuperada com êxito. |
Comentários
CoGetInstanceFromIStorage cria um novo objeto e o inicializa de um objeto de armazenamento usando IPersistFile::Load. O resultado dessa função é semelhante à criação de uma instância com uma chamada para CoCreateInstanceEx, seguida por uma chamada de inicialização para IPersistFile::Load, com as seguintes distinções importantes:
- Menos viagens de ida e volta de rede são exigidas por essa função ao instanciar um objeto em um computador remoto.
- No caso em que dwClsCtx estiver definido como CLSCTX_REMOTE_SERVER e pServerInfo for NULL, se a classe for registrada com o valor ActivateAtStorage ou não tiver informações do Registro associadas, essa função criará uma instância de um objeto no computador em que o pstg reside, fornecendo o menor tráfego de rede possível.
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 | objbase.h |
Biblioteca | Ole32.lib |
DLL | Ole32.dll |