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

Traditionnellement, le déchargement d’une DLL qui traite les appels RPC à l’aide de handles de contexte, sans arrêter au préalable le processus d’hébergement, a été problématique. Cela est dû au fait que 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 l’exécution de l’appel de procédure distante tente de fermer le descripteur de contexte, sa tentative d’appeler l’accès à la routine d’exécution ne respecte pas et le serveur tombe en panne.

à partir de Windows XP, une nouvelle API appelée RpcServerUnregisterIfEx a été ajoutée. RpcServerUnregisterIfEx ferme les descripteurs de contexte ouverts par l’interface en cours d’annulation d’inscription ; la fonction RpcServerUnregisterIf ne le fait pas. L’utilisation de RpcServerUnregisterIfEx n’est pas nécessaire lorsque l’ensemble du processus s’arrête, mais il est nécessaire si une ou plusieurs dll hébergeant les routines d’exécution sont déchargées alors que des handles de contexte en attente existent.