FindFirstChangeNotification est-il la meilleure API à utiliser pour la notification de modification du système de fichiers sur Windows?

Je suis nouveau dans la programmation Windows et j’essaie d’être averti de toutes les modifications apscopes au système de fichiers (similaire aux informations affichées par FileMon à partir de SysInternals, mais via une API). Un FindFirstChangeNotification pour chaque lecteur (non-réseau, non-substitué) est-il mon meilleur pari ou existe-t-il d’autres API C / C ++ plus appropriées?

FindFirstChangeNotification convient bien, mais pour une puissance légèrement supérieure, vous devez utiliser ReadDirectoryChangesW. (En fait, c’est même recommandé dans la documentation!)

Il ne nécessite pas de pointeur de fonction, il vous oblige à décoder manuellement un tampon brut, il utilise des noms de fichiers Unicode, mais il est généralement meilleur et plus flexible.

D’un autre côté, si vous voulez faire ce que fait FileMon, vous devriez probablement faire ce que fait FileMon et utiliser IFS pour créer et installer un filtre de système de fichiers .

Il y a d’autres façons de le faire, mais la plupart impliquent des efforts de votre part (ou prenez les performances de votre application, ou vous devez bloquer un thread pour les utiliser, etc.). FindFirstChangeNotification est un peu compliqué si vous n’avez pas l’habitude de manipuler des pointeurs de fonctions, etc., mais il a l’avantage de permettre à l’OS de faire le gros du travail pour vous.

En fait, FileSystemWatcher fonctionne parfaitement avec les lecteurs réseau partagés. Je l’utilise maintenant dans une application qui, entre autres, surveille le système de fichiers pour les modifications. (www.tabbles.net).

Vous pouvez utiliser la classe FileSystemWatcher. Très efficace mais ne peut pas fonctionner avec les lecteurs partagés de réseau.