Partager via


Configuration requise du serveur DLL

Bien que la plupart des DLL puissent s’exécuter dans une substitution, certaines DLL ne peuvent pas être exécutées.

La DLL doit être bien comportementée si vous souhaitez utiliser le substitut fourni par le système. Par exemple, une DLL qui appelle des méthodes qui inscrivent des rappels du client essaierait d’appeler ces rappels comme si les pointeurs de fonction reçus étaient pour des instructions dans son espace d’adressage, ce qui n’est pas le cas. De même, une DLL qui utilise une variable globale qu’elle s’attend à ce que le client accède ne fonctionne pas. En général, les paramètres qui ne peuvent pas être correctement marshalés empêchent le serveur DLL de s’exécuter en dehors du processus client. Dans de nombreux cas, vous pouvez écrire un substitut personnalisé spécifiquement conçu pour compenser le comportement « incorrect ». (Pour plus d’informations, consultez Écriture d’un substitut personnalisé.)

Si le serveur DLL utilise des interfaces personnalisées, vous devez vous assurer que le code de marshaling est disponible pour ces interfaces. Par exemple, vous pouvez générer et inscrire une DLL proxy ou fournir et inscrire une bibliothèque de types qui permettrait au serveur de fonctionner correctement lors de l’exécution dans une substitution.

Les serveurs DLL sont chargés uniquement dans un processus de substitution s’exécutant dans le contexte de sécurité approprié. Le contexte de sécurité du substitut du serveur DLL est déterminé de la même façon que pour les serveurs EXE. Le substitut du serveur DLL s’exécute dans le même contexte de sécurité que le client, sauf si une valeur RunAs, qui détermine le contexte de sécurité, est définie dans la section AppID registre du serveur.

dll de substitution