Usando o substituto fornecido pelo sistema
Para usar o substituto fornecido pelo sistema para o seu servidor DLL, registe a DLL especificando uma string vazia ou NULL para o valor de DllSurrogate no registro. Quando uma solicitação de ativação para um servidor DLL assim designado chega ao COM, o COM inicia o processo substituto padrão e a DLL solicitada (especificando o CLSID na linha de comando de inicialização internamente) ao mesmo tempo para evitar uma chamada separada. (Para obter informações sobre como executar mais de um servidor DLL num processo substituto, consulte Partilha de Substitutos.)
A implementação padrão do processo substituto é um pseudo-servidor COM com um modelo de threading mista. Quando vários servidores DLL são carregados em um único processo substituto, esse processo garante que cada servidor DLL seja instanciado usando o modelo de threading especificado no registro para esse servidor. Todos os servidores de thread livre carregados viverão juntos no apartamento multithreaded, enquanto cada servidor threaded de apartamento residirá em um apartamento de thread único. Se um servidor DLL suportar ambos os modelos de encadeamento, o COM escolherá multithreading.
Este processo substituto foi escrito para que o COM cuide tanto do descarregamento completo dos servidores DLL quanto da terminação do processo substituto. O tempo de vida do processo é informado principalmente pelo número de objetos empacotados no substituto, que atua como uma medida heurística de dependências externas do processo. Embora a intenção seja representar dependências externas, esse modelo de tempo de vida não distingue entre marshaling in-proc e out-of-proc. Tome cuidado para evitar fixar involuntariamente o substituto através de marshaling entre apartamentos, ou através de mecanismos baseados em marshaling in-proc, como o Global Interface Table ou IAgileReference.
O substituto fornecido pelo sistema funcionará muito bem para a maioria dos desenvolvedores, além de ser muito fácil de usar. No entanto, os desenvolvedores com considerações especiais podem decidir que um substituto personalizado é necessário. Para obter mais informações, consulte Criar um suplente personalizado.