Compartir a través de


Uso del suplente proporcionado por el sistema

Para usar el suplente proporcionado por el sistema para el servidor DLL, registre el archivo DLL que especifica una cadena vacía o NULL para el valor DllSurrogate en el registro. Cuando una solicitud de activación para un servidor DLL designado viene a COM, COM inicia el proceso suplente predeterminado y el archivo DLL solicitado (especificando CLSID en la línea de comandos de inicio internamente) al mismo tiempo para evitar una llamada independiente. (Para obtener información sobre cómo ejecutar más de un servidor DLL en un proceso suplente, consulte Uso compartido suplente).

La implementación predeterminada del proceso suplente es un servidor pseudo-COM de estilo de modelo de subproceso mixto. Cuando se cargan varios servidores DLL en un único proceso suplente, este proceso garantiza que se cree una instancia de cada servidor DLL mediante el modelo de subprocesos especificado en el registro para ese servidor. Todos los servidores sin subprocesos cargados residirán juntos en el apartamento multiproceso, mientras que cada servidor de subproceso de apartamento residirá en un apartamento de un solo subproceso. Si un servidor DLL admite ambos modelos de subprocesos, COM elegirá multithreading.

Este proceso suplente se escribe para que COM controle tanto la descarga de servidores DLL como la terminación del proceso suplente. La duración del proceso se indica principalmente por el número de objetos serializado en el suplente, que actúa como una medida heurística de dependencias externas en el proceso. Aunque la intención es representar dependencias externas, este modelo de duración no distingue entre serialización en proceso y fuera del proceso. Tenga cuidado de evitar anclar involuntariamente el suplente a través de serialización entre apartamentos, o a través de mecanismos basados en serialización en proceso, como la tabla de interfaz global o IAgileReference.

El suplente proporcionado por el sistema funcionará muy bien para la mayoría de los desarrolladores, así como para ser muy fácil de usar. Sin embargo, esos desarrolladores con consideraciones especiales pueden decidir que es necesario un suplente personalizado. Para obtener más información, consulte Escritura de un suplente personalizado.