Partager via


mises à jour de la bibliothèque Dynamic-Link

Il est parfois nécessaire de remplacer une DLL par une version plus récente. Avant de remplacer une DLL, effectuez une vérification de version pour vous assurer que vous remplacez une version antérieure par une version plus récente. Il est possible de remplacer une DLL en cours d’utilisation. La méthode que vous utilisez pour remplacer les DLL en cours d’utilisation dépend du système d’exploitation que vous utilisez. Sur Windows XP et versions ultérieures, les applications doivent utiliser applications isolées et les assemblys côte à côte.

Il n’est pas nécessaire de redémarrer l’ordinateur si vous effectuez les étapes suivantes :

  1. Utilisez la fonction MoveFileEx pour renommer la DLL en cours de remplacement. Ne spécifiez pas MOVEFILE_COPY_ALLOWED et vérifiez que le fichier renommé se trouve sur le même volume que celui qui contient le fichier d’origine. Vous pouvez également simplement renommer le fichier dans le même répertoire en lui donnant une autre extension.
  2. Copiez la nouvelle DLL dans le répertoire qui contient la DLL renommée. Toutes les applications utilisent désormais la nouvelle DLL.
  3. Utilisez moveFileEx avec MOVEFILE_DELAY_UNTIL_REBOOT pour supprimer la DLL renommée.

Avant de procéder à ce remplacement, les applications utilisent la DLL d’origine jusqu’à ce qu’elle soit déchargée. Une fois le remplacement terminé, les applications utilisent la nouvelle DLL. Lorsque vous écrivez une DLL, vous devez veiller à ce qu’elle soit préparée pour cette situation, en particulier si la DLL conserve des informations d’état globales ou communique avec d’autres services. Si la DLL n’est pas préparée pour une modification des protocoles globaux d’état ou de communication, la mise à jour de la DLL vous oblige à redémarrer l’ordinateur pour vous assurer que toutes les applications utilisent la même version de la DLL.