Compartilhar via


Requisitos do servidor DLL

Embora a maioria das DLLs possa ser executada em um substituto, algumas DLLs não podem.

A DLL deve ser bem comportada se você quiser usar o substituto fornecido pelo sistema. Por exemplo, uma DLL que chama métodos que registram retornos de chamada do cliente tentaria invocar esses retornos de chamada como se os ponteiros de função recebidos fossem para instruções em seu espaço de endereço, o que não é o caso. Da mesma forma, uma DLL que usa uma variável global que espera que o cliente acesse não funcionará. Em geral, parâmetros que não podem ser empacotados corretamente impedirão que o servidor DLL seja executado fora do processo do cliente. Em muitos casos, você pode escrever um substituto personalizado especificamente projetado para compensar o comportamento "ruim". (Para obter mais informações, consulte Escrevendo umalternativo personalizado .)

Se o servidor DLL usar interfaces personalizadas, você precisará garantir que o código de marshaling esteja disponível para essas interfaces. Por exemplo, você pode criar e registrar uma DLL de proxy ou fornecer e registrar uma biblioteca de tipos que permitiria que o servidor funcionasse corretamente durante a execução em um substituto.

Os servidores DLL serão carregados apenas em um processo alternativo em execução no contexto de segurança adequado. O contexto de segurança para o substituto do servidor DLL é determinado da mesma forma que para servidores EXE. O servidor DLL alternativo é executado no mesmo contexto de segurança que o cliente, a menos que um valor RunAs, que determina o contexto de segurança, seja definido na seção AppID registro do servidor.

substitutos de DLL