Função CoRegisterClassObject (combaseapi.h)
Registra um objeto de classe EXE com OLE para que outros aplicativos possam se conectar a ele.
Sintaxe
HRESULT CoRegisterClassObject(
[in] REFCLSID rclsid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwClsContext,
[in] DWORD flags,
[out] LPDWORD lpdwRegister
);
Parâmetros
[in] rclsid
O CLSID a ser registrado.
[in] pUnk
Um ponteiro para a interface IUnknown no objeto de classe cuja disponibilidade está sendo publicada.
[in] dwClsContext
O contexto no qual o código executável deve ser executado. Para obter informações sobre esses valores de contexto, consulte a enumeração CLSCTX .
[in] flags
Indica como as conexões são feitas com o objeto de classe. Para obter informações sobre esses sinalizadores, consulte a enumeração REGCLS .
[out] lpdwRegister
Um ponteiro para um valor que identifica o objeto de classe registrado; posteriormente usado pela função CoRevokeClassObject para revogar o registro.
Retornar valor
Essa função pode retornar os valores de retorno padrão E_INVALIDARG, E_OUTOFMEMORY e E_UNEXPECTED, bem como os valores a seguir.
Código de retorno | Descrição |
---|---|
|
O objeto de classe foi registrado com êxito. |
Comentários
Os aplicativos de objeto EXE devem chamar CoRegisterClassObject na inicialização. Ele também pode ser usado para registrar objetos internos para uso pelo mesmo EXE ou outro código (como DLLs) que o EXE usa. Somente aplicativos de objeto EXE chamam CoRegisterClassObject. Manipuladores de objetos ou aplicativos de objeto DLL não chamam essa função — em vez disso, eles devem implementar e exportar a função DllGetClassObject .
Na inicialização, um aplicativo de objeto EXE de uso múltiplo deve criar um objeto de classe (com a interface IClassFactory ) e chamar CoRegisterClassObject para registrar o objeto de classe. Aplicativos de objeto que dão suporte a várias classes diferentes (como vários tipos de objetos inseriveis) devem alocar e registrar um objeto de classe diferente para cada uma.
Vários registros do mesmo objeto de classe são independentes e não produzem um erro. Cada registro subsequente produz uma chave exclusiva em lpdwRegister.
Vários aplicativos de MDI (interface de documento) devem registrar seus objetos de classe. Os aplicativos SDI (interface de documento único) devem registrar seus objetos de classe somente se puderem ser iniciados por meio da opção /Embedding .
O servidor de um objeto de classe deve chamar CoRevokeClassObject para revogar o objeto de classe (remover seu registro) quando todos os seguintes forem verdadeiros:
- Não há instâncias existentes da definição de objeto.
- Não há bloqueios no objeto de classe.
- O aplicativo que fornece serviços para o objeto de classe não está sob controle do usuário (não visível para o usuário na exibição).
A partir do Windows Server 2003, se um aplicativo de objeto COM for registrado como um serviço, COM verificará o registro. O COM garante que a ID do processo do serviço, no SCM (gerenciador de controle de serviço), corresponda à ID do processo de registro. Caso contrário, COM falhará no registro. Se o aplicativo de objeto COM for executado na conta do sistema sem chave do Registro, COM tratará a identidade do aplicativo de objetos como Inicializando Usuário.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | combaseapi.h (inclua Objbase.h) |
Biblioteca | Ole32.lib |
DLL | Ole32.dll |