Partager via


Déchargement d’un serveur avec des handles de contexte en suspens

Traditionnellement, le déchargement d’une DLL qui traite les appels RPC à l’aide de handles de contexte, sans arrêter d’abord le processus d’hébergement, a été problématique. En effet, la routine d’exécution n’est plus valide lorsque la DLL est déchargée. Lorsqu’un client avec un handle de contexte précédemment ouvert échoue et que le temps d’exécution RPC tente de fermer le handle de contexte, sa tentative d’appel de l’accès de routine d’exécution échoue et le serveur se bloque.

À compter de Windows XP, une nouvelle API appelée RpcServerUnregisterIfEx a été ajoutée. RpcServerUnregisterIfEx ferme les handles de contexte ouverts par l’interface en cours de désinscription ; la fonction RpcServerUnregisterIf n’en a pas. L’utilisation de RpcServerUnregisterIfEx n’est pas nécessaire lorsque l’ensemble du processus s’arrête, mais elle est nécessaire si une ou plusieurs DLL hébergeant les routines d’exécution sont déchargées alors qu’il existe des handles de contexte en suspens.