CoFreeUnusedLibraries() déclenche un appel à la DllCanUnloadNow pour chaque processus en COM DLL qui exporte cette fonction. Vous n'êtes pas sûr des problèmes de threading ou des composants COM hors processus en ce qui concerne cette API.
On peut supposer que quelqu'un qui a écrit le code qui appelle DllCanUnloadNow avant OleUnitialize a tenté de réduire le jeu de travail et d'assurer le nettoyage.
Je ne pense pas qu'il y ait beaucoup de valeur à appeler avant droit CoFreeUnusedLibraries arrêt de l'application (les DLL vont se décharger de toute façon). D'après mon expérience, l'appel à CoFreeUnusedLibraries provoque des plantages et des blocages dans des DLL COM tierces dont l'implémentation DllCallUnloadNow n'a jamais été testée avant la publication. (Parce que pas trop d'applications appellent cette fonction).
Vous n'avez pas fourni une pile d'appel ou un indice quant à l'endroit où le blocage se produisait (avez-vous pénétré dans un débogueur pour voir quelle DLL est en haut de la pile?). Ma conjecture est que vous pouvez probablement prendre cet appel si vous ne pouvez pas réparer la DLL fautive.