Compartilhar via


CoGetClassObject

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função fornece um ponteiro para uma interface em um objeto classe associado com um identificador classe especificada. Chamar CoGetClassObject diretamente quando você desejar criar múltiplo objetos a um objeto classe cujo identificador classe já está em Registro o sistema. Classe a maioria dos objetos implementar o IClassFactory interface. Você faria em seguida, chamar IClassFactory::CreateInstance Para criar um não inicializado objeto. Para criar um único objeto em um local máquina, use o CoCreateInstance função.

Syntax

STDAPI CoGetClassObject(
  REFCLSID rclsid, 
  WORD dwClsContext, 
  COSERVERINFO* pServerInfo, 
  REFIID riid, 
  LPVOID* ppv
);

Parameters

  • rclsid
    [no] Identificador de classe associado com os dados e codificar que você usará para criar os objetos.
  • dwClsContext
    [no] Especifica o contexto no qual a codificar executável é ser executar O válido somente valor para este parâmetro é CLSCTX_INPROC_SERVER. Isso é a partir de enumeração CLSCTX. Qualquer outro valor resulta em um valor de retorno de E_NOTIMPL.
  • pServerInfo
    [no] Definir como NULL.
  • riid
    [no] Referência ao identificador da interface. Esse identificador será fornecida no PPV Em bem-sucedido retornar. Essa interface será usado para se comunicar com o objeto classe. Normalmente esse valor é IID_IClassFactory, embora outros valores – como IID_IClassFactory2 que oferece suporte a uma forma de licenciamento – são permitidos. Todos os OLE-defined interface IIDs são definidos nos arquivos cabeçalho OLE como IID_InterfaceName, onde InterfaceName é o nome da interface.
  • PPV
    [out] Endereço do ponteiro variável que recebe o ponteiro interface solicitado no riid. Após bem-sucedido retornar, PPV Contém o ponteiro interface solicitada.

Return Value

Um dos valores descritos a seguinte tabela é retornada.

Valor Descrição

S_OK

Local e conexão para o objeto especificado classe foi bem-sucedido.

REGDB_E_CLASSNOTREG

Identificador de classe não está corretamente registrado. Também pode indicar que o valor especificado na dwClsContext não é o Registro.

E_NOINTERFACE

Ambos o objeto apontado pelo PPV Não suporte a interface identificado por riid, ou a Falha de QueryInterface operação no objeto de classe retornou E_NOINTERFACE.

REGDB_E_READREGDB

Erro ao ler o banco de dados registro.

CO_E_DLLNOTFOUND

No-processo DLL ou manipulador DLL não encontrado (depende contexto).

CO_E_APPNOTFOUND

Executável não encontrado (CLSCTX_LOCAL_SERVER somente).

E_ACCESSDENIED

Falha geral acessar (retornada da LoadLibrary Ou CreateProcess).

CO_E_ERRORINDLL

EXE possui erro na imagem.

CO_E_APPDIDNTREG

EXE foi iniciado, mas ele não registrar classe objeto (talvez ou pode não ter desligar).

Remarks

Um objeto classe na OLE é um intermediário objeto que ofereça suporte a uma interface que permite operações comum para um GRUPO de objetos. Os objetos neste GRUPO são instâncias derivado da mesma definição objeto representada por um identificador único classe. Geralmente, é a interface implementado em um objeto classe IClassFactory, a qual você pode criar objeto instâncias de uma definição determinada (classe).

Um chamar para CoGetClassObject Cria, inicializa e atribui a acessar chamador para o objeto classe através um ponteiro para uma interface especificada com o riid parâmetro. O objeto classe é aquele associado com identificador de classe que você especificar na rclsid parâmetro. Os detalhes de como o sistema localiza o associado codificar e dados em uma determinada máquina são transparente para o chamador, como é o dinâmico Carregamento de qualquer codificar que já não está carregado.

Se o contexto classe for CLSCTX_REMOTE_SERVER, indicando remoto ativação é exigido, a COSERVERINFO estrutura fornecida a pServerInfo parâmetro permite que você especificar a máquina no qual o servidor está localizado. Para informações sobre o algoritmo usado para localizar um servidor remoto quando pServerInfo é NULL, referir para o CLSCTX enumeraçã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.

Existem dois locais para localizar um identificador classe para uma determinada classe:

  • O Registro contém uma associação entre identificadores classe e sufixos arquivo e entre identificadores classe e assinaturas arquivo para determinar a classe de um objeto.
  • Armazenar o objeto contém o identificador classe quando um objeto for salvo para armazenamento persistente.

Para criar e inicializar incorporado ou vinculados objetos documento OLE, não é necessário chamar CoGetClassObject diretamente. Em vez disso, chamar um das OleCreate Ou OleCreateXXX funções auxiliar. Essas funções encapsular o processo todo objeto instanciação e inicialização e chamar, entre outras funções, CoGetClassObject.

O riid parâmetro especifica a interface que de cliente usará para se comunicar com o objeto classe. Na maioria dos casos, essa interface é IClassFactory. Isso permite acessar para o IClassFactory::CreateInstance método, através do qual o chamador pode então criar um não inicializado objeto do tipo especificado na sua implementação. Todas as classes registradas no sistema com um identificador classe devem implementar IClassFactory.

Em casos raros, no entanto, você pode desejar para especificar alguns outro interface que define as operações comum para um conjunto de objetos. Por exemplo, da maneira que OLE implementa identificadores de origem, é a interface no objeto de classe IParseDisplayName, usado para transformar o nome de um objeto em um moniker exibir.

O dwClsContext parâmetro especifica o contexto de execução, permitindo que um identificador classe seja associado com diferentes partes de codificar em contextos de execução diferentes. O CLSCTX enumeração, definida no Compobj.h, especifica a disponível sinalizadores contexto. CoGetClassObject Consulta (como apropriado para o contexto indicado) o Registro tanto objetos de classe que estão atualmente registrados por chamado de CoRegisterClassObject função.

A versão um objeto classe, use da o objeto classe Lançamento método. A função CoRevokeClassObject Deve ser usado apenas para remover identificador classe do objeto uma classe de Registro de sistema.

Passando para esta função qualquer inválido e, em algumas circunstâncias, NULL ponteiros resultam em terminação inesperada do aplicativo.

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 2.0 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

CoCreateInstance
IClassFactory
IClassFactory::CreateInstance
COSERVERINFO

Other Resources

CreateProcess