Función CoRegisterClassObject (combaseapi.h)
Registra un objeto de clase EXE con OLE para que otras aplicaciones puedan conectarse a él.
Sintaxis
HRESULT CoRegisterClassObject(
[in] REFCLSID rclsid,
[in] LPUNKNOWN pUnk,
[in] DWORD dwClsContext,
[in] DWORD flags,
[out] LPDWORD lpdwRegister
);
Parámetros
[in] rclsid
CLSID que se va a registrar.
[in] pUnk
Puntero a la interfaz IUnknown en el objeto de clase cuya disponibilidad se está publicando.
[in] dwClsContext
Contexto en el que se va a ejecutar el código ejecutable. Para obtener información sobre estos valores de contexto, vea la enumeración CLSCTX .
[in] flags
Indica cómo se realizan las conexiones al objeto de clase. Para obtener información sobre estas marcas, consulte la enumeración REGCLS .
[out] lpdwRegister
Puntero a un valor que identifica el objeto de clase registrado; más adelante lo usa la función CoRevokeClassObject para revocar el registro.
Valor devuelto
Esta función puede devolver los valores devueltos estándar E_INVALIDARG, E_OUTOFMEMORY y E_UNEXPECTED, así como los siguientes valores.
Código devuelto | Descripción |
---|---|
|
El objeto de clase se registró correctamente. |
Comentarios
Las aplicaciones de objetos EXE deben llamar a CoRegisterClassObject al iniciarse. También se puede usar para registrar objetos internos para usarlos por el mismo EXE u otro código (como archivos DLL) que usa el EXE. Solo las aplicaciones de objetos EXE llaman a CoRegisterClassObject. Los controladores de objetos o las aplicaciones de objetos DLL no llaman a esta función; en su lugar, deben implementar y exportar la función DllGetClassObject .
En el inicio, una aplicación de objeto EXE de varios usos debe crear un objeto de clase (con la interfaz IClassFactory en él) y llamar a CoRegisterClassObject para registrar el objeto de clase. Las aplicaciones de objeto que admiten varias clases diferentes (como varios tipos de objetos incrustables) deben asignar y registrar un objeto de clase diferente para cada uno.
Varios registros del mismo objeto de clase son independientes y no producen un error. Cada registro subsiguiente produce una clave única en lpdwRegister.
Varias aplicaciones de interfaz de documento (MDI) deben registrar sus objetos de clase. Las aplicaciones de interfaz de documento único (SDI) solo deben registrar sus objetos de clase si se pueden iniciar mediante el modificador /Embedding .
El servidor de un objeto de clase debe llamar a CoRevokeClassObject para revocar el objeto de clase (quitar su registro) cuando se cumplen todas las siguientes condiciones:
- No hay instancias existentes de la definición de objeto.
- No hay bloqueos en el objeto de clase.
- La aplicación que proporciona servicios al objeto de clase no está bajo control de usuario (no es visible para el usuario en la pantalla).
A partir de Windows Server 2003, si una aplicación de objeto COM está registrada como servicio, COM comprueba el registro. COM garantiza que el identificador de proceso del servicio, en el administrador de control de servicios (SCM), coincide con el identificador de proceso del proceso de registro. Si no es así, COM produce un error en el registro. Si la aplicación de objetos COM se ejecuta en la cuenta del sistema sin clave del Registro, COM trata la identidad de la aplicación de objetos como Iniciar usuario.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [aplicaciones de escritorio | Aplicaciones para UWP] |
Servidor mínimo compatible | Windows 2000 Server [aplicaciones de escritorio | Aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | combaseapi.h (incluya Objbase.h) |
Library | Ole32.lib |
Archivo DLL | Ole32.dll |