Compartir a través de


Crear Registration-Free objetos COM

Los contextos de activación permiten usar objetos COM sin necesidad de que se registren. Esto permite que la aplicación tenga varios componentes con una funcionalidad diferente en función de su versión en lugar de su información del Registro. Varios componentes pueden exponer el mismo objeto COM con el mismo GUID, pero tienen una funcionalidad diferente basada en la versión.

Cuando una aplicación solicita un GUID desde CLSIDFromProgID, COM busca primero la asignación de clSID a CLSID en el contexto de activación activo. Cuando una aplicación usa CoCreateInstance para obtener un puntero de interfaz de instancia, COM busca en el contexto de activación activo para buscar qué DLL hospedará el CLSID. Si el contexto de activación no contiene la información necesaria, COM busca la información en el Registro mediante el método habitual.

Tenga en cuenta que, dado que los contextos de activación son por subproceso, COM serializa el contexto de activación del subproceso de creación en el subproceso host y lo activa antes de llamar a LoadLibrary o DllGetClassObject en el subproceso host. Esta funcionalidad ya está presente en Windows, el código de cliente no es necesario para hacer nada para implementar esto.

Las clases COM se pueden exportar mediante componentes hospedados sin pasar por el Registro. Varios componentes pueden exponer el mismo ProgID para diferentes objetos COM, y la aplicación de hospedaje solo debe encontrar el contexto de activación adecuado y, a continuación, usar CLSIDFromProgID y CoCreateInstance para obtener los punteros de interfaz del objeto hospedado.