J'ai tendance à utiliser ReadDirectoryChangesW() avec un port d'achèvement d'E/S, ce qui est bon pour quand vous voulez surveiller plusieurs répertoires parce que vous pouvez avoir un seul thread service de la IOCP et le traitement des résultats de tous vos appels à ReadDirectoryChangesW().
Créez d'abord un IOCP, une fois, en appelant CreateIoCompletionPort(). Démarrez un thread qui appelle GetQueuedCompletionStatus() et traite les modifications de votre répertoire asynchrone.
Maintenant pour chaque répertoire que vous voulez surveiller. Commencez par ouvrir votre gestionnaire de répertoire normalement. Ensuite, associez-le à votre IOCP en appelant CreateIoCompletionPort() et en passant le handle IOCP (voir docs pour plus de détails). Enfin, appelez ReadDirectoryChangesW() et passez un OVERLAPPED comme détaillé dans les docs. L'appel renverra et, en cas de succès, les résultats deviendront disponibles en tant que résultats de GetQueuedCompletionStatus() dans le thread que vous avez créé pour le service IOCP.
Merci! Mais je suis un peu confus par ce que dit MSDN. Pouvez-vous expliquer un peu plus? – user26404
Je veux savoir quelle méthode est la meilleure si je veux surveiller plus d'un répertoire simultanément dans un seul thread. – user26404