Compartilhar via


CoCreateInstanceEx

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

A função cria uma instância de uma classe específica em uma máquina específica.

Syntax

HRESULT CoCreateInstanceEx(
  REFCLSID rclsid,
  IUnknown* punkOuter,
  DWORD dwClsCtx,
  COSERVERINFO* pServerInfo,
  ULONG cmq,
  MULTI_QI* pResults
);

Parameters

  • rclsid
    [no] CLSID do objeto a ser criado.
  • punkOuter
    [no] Quando não-NULL, indica a instância está sendo criada como parte de um agregado, e punkOuter Deve ser usada como 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.
  • pServerInfo
    [no] Informações sobre o computador no qual o objeto criar instância. Pode ser NULL, no qual maiúsculas e minúsculas o objeto é instanciado em de local computador ou o computador especificado no Registro sob a classe RemoteServerName nomeado valor, de acordo com a interpretação das dwClsCtx parâmetro.
  • cmq
    [no] Número de MULTI_QI estruturas no pResults. Deve ser maior que zero.
  • pResults
    [no] 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.
  • REGDB_E_CLASSNOTREG
    Uma classe especificada não está registrado no banco de dados registro. Também pode indicar que o tipo de servidor solicitado in a CLSCTX enumeração não está registrada ou os valores para tipos de servidor no Registro são danificar.
  • CLASS_E_NOAGGREGATION
    Esta classe não pode ser criado como parte de um agregado.
  • CO_S_NOTALLINTERFACES
    Pelo menos um, mas não todos as interfaces solicitadas na pResults matriz foram recuperadas com êxito. O hr campo de cada um de MULTI_QI estruturas no pResults Com S_OK ou E_NOINTERFACE indica se a interface específica foi retornado.
  • E_NOINTERFACE
    Nenhum das interfaces solicitadas na pResults matriz foram recuperadas com êxito.

Remarks

CoCreateInstanceEx Cria um único não inicializado objeto associado com o CLSID determinado em um máquina remota especificado.

Esta é uma extensão da função CoCreateInstance, que cria um objeto sobre o local somente máquina.

Além disso, em vez solicitando uma interface simples e obtendo um ponteiro único para essa interface, CoCreateInstanceEx torna possível especificar uma matriz de estruturas, cada apontando para um identificador interface (IID) na entrada e, em retorno, contendo (se disponível) um ponteiro para a interface solicitada e a valor de retorno da Falha de QueryInterface chamar para essa interface. Isso permite que menos arredondar Trips entre máquinas.

O CoCreateInstanceEx função auxiliar encapsula chamadas três: Primeiro, para CoGetClassObject Para conectar para o objeto classe associado com o CLSID especificado, especificando a localidade máquina da classe; Segundo, para IClassFactory::CreateInstance Para criar um não inicializado instância e finalmente, para IClassFactory::Release, a versão o objeto classe.

O objeto criado assim ainda deve ser inicializado por um chamar a uma das interfaces de inicialização (como IPersistStorage::Load). As duas funções auxiliar, CoGetInstanceFromFile e CoGetInstanceFromIStorage encapsular os criação instância e inicialização a partir das fontes óbvias.

O COSERVERINFO estrutura passado como o pServerInfo parâmetro contém as configurações de segurança que COM usará ao criar uma nova instância do objeto especificado.

Observe que este parâmetro não influenciam as configurações de segurança usadas ao fazer método chama no instanciado objeto. Essas configurações de segurança são configurável, em um por-interface base, com o CoSetProxyBlanket função.

Quando chamado CoCreateInstanceEx Ou CoGetClassObject Com o remoto nome da máquina definido para o local máquina e usando o sinalizador CLSTCTX_REMOTE_SERVER, a falha chamar.

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

See Also

Reference

COM Functions