CoGetInstanceFromIStorage
9/8/2008
Essa função cria um novo objeto e inicializa-lo de um objeto armazenamento através um chamar interno para IPersistStorage::Load.
Syntax
HRESULT CoGetInstanceFromIStorage(
COSERVERINFO* pServerInfo,
CLSID* pclsid,
IUnknown* punkOuter,
DWORD dwClsCtx,
IStorage* pstg,
ULONG cmq,
MULTI_QI* rgmqResults
);
Parameters
pServerInfo
[no] Ponteiro para um COSERVERINFO estrutura que especifica a máquina na qual o objeto criar instância e a configuração autenticação a ser usado.Pode ser NULL, no qual maiúsculas e minúsculas o objeto é instanciado (1) on o atual máquina, (2) at a máquina especificada na RemoteServerName nomeado-valor para a classe no Registro ou (3) na máquina onde o objeto armazenamento apontado pelo pstg Encontra se a classe é registrado ActivateAtStorage especificado ou não local tem informações Registro.
- pclsid
[no] Ponteiro para o identificador classe (CLSID) do objeto a ser criado. Pode ser NULL, no qual maiúsculas e minúsculas há um chamar para IStorage::STAT Para localizar a classe do objeto.
punkOuter
[no] Quando não-NULL, indica a instância está sendo criada como parte de um agregado, e punkOuter Deve ser usado como o ponteiro para controlar instância de nova IUnknown.Agregação não está com suporte cruzado - processo ou cruzado - máquina. Ao instanciar um objeto out of processo, CLASS_E_NOAGGREGATION será retornado se punkOuter não-NULL.
- dwClsCtx
[no] Valores extraídos o CLSCTX enumeração.
- pstg
[no] Ponteiro para armazenamento para inicializar o objeto com IPersistStorage::Load. Pode não ser NULL.
- cmq
Número de MULTI_QI estruturas no rgmqResults. Deve ser maior que zero.
- rgmqResults
Matriz de MULTI_QI estruturas. Cada estrutura possui três membros: o identificador para um (interface solicitadapIID), a localidade para Retornar (ponteiro de interfacepItf) e a valor de retorno do chamar para Falha de QueryInterface (hr).
Return Value
Essa função suporta o padrão valor de retorno E_INVALIDARG, bem como o seguinte:
- S_OK
Indica sucesso.
- CO_S_NOTALLINTERFACES
Pelo menos um, mas não todos as interfaces solicitadas na rgmqResults matriz foram recuperadas com êxito. O hr campo de cada um de MULTI_QI estruturas no rgmqResults Com S_OK ou E_NOINTERFACE indica se o ponteiro interface específica foi recuperado.
- E_NOINTERFACE
Nenhum das interfaces solicitadas na rgmqResults matriz foram recuperadas com êxito.
Remarks
CoGetInstanceFromIStorage Cria um novo objeto e inicializa-lo de um objeto armazenamento através um chamar para IPersistStorage::Load. Essa função é semelhante ao criar uma instância usando CoCreateInstanceEx seguido por um chamar para IPersistStorage::Load, com a seguinte distinções importantes:
- Rede menos arredondar viagens são exigido por essa função ao instanciar remotamente.
- Na maiúsculas e minúsculas onde dwClsCtx é definido como CLSCTX_REMOTE_SERVER e pServerInfo é NULL, se a classe estiver registrado com o ActivateAtStorage nomeado valor ou não associado tem informações Registro, essa função será criar instância um objeto na mesma máquina onde o objeto armazenamento apontado pelo pstg reside, fornecendo o mínimo possível tráfego de rede.
Por exemplo, se pstg foram obtidos por um chamar para StgCreateDocfile, especificando "\\myserver\users\johndo\file", o objeto pode ser instanciado na "MyServer" máquina e o objeto poderia acessar o objeto armazenamento diretamente.
Para determinar se a plataforma oferece suporte a essa função, consulte Determinando suporte COM APIs.
Requirements
Header | objbase.h |
Library | ole32.lib |
Windows Embedded CE | Windows CE 3.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |