Comment déboguer les notifications de modification de fichier obtenues par FindFirstChangeNotification?

StackOverflow https://stackoverflow.com/questions/503401

Question

La question est donc la suivante: je reçois des notifications que je ne souhaite pas recevoir. Mais je ne sais pas pour quel fichier / répertoire je les ai obtenus. Existe-t-il un moyen de savoir pourquoi une notification a été renvoyée?

Si vous pensez à ReadDirectoryChangesW, veuillez inclure un exemple de code significatif.

Était-ce utile?

La solution

Si vous souhaitez que Windows vous dise quel fichier ou sous-répertoire spécifique a été modifié, vous devez utiliser ReadDirectoryChangesW . Le mode asynchrone est assez simple si vous utilisez une routine d’achèvement.

D'autre part, vous obtiendrez probablement de meilleures performances en utilisant le Ports d’achèvement d’E / S . Je recommanderais de télécharger l'excellent code source CDirectoryChangeWatcher de Wes Jones comme point de départ. Son code vous aidera à éviter plusieurs pièges, en particulier lors de l'analyse des FILE_NOTIFY_INFORMATION enregistrements.

Autres conseils

~ pseudocode

HANDLE handles[MAX_HANDLES];
std::string dir_array[MAX_HANDLES];

for i from 0 to MAX_HANDLES:
   h[i] = FindFirstChangeNotification(dir_array[i]...);

nCount = MAX_HANDLES;
ret = WaitForMultipleObjects(handles, nCount ...);

// check if ret returns something between WAIT_OBJECT_0 and WAIT_OBJECT_0+nCount-1
if "so":
  ret -= WAIT_OBJECT_0;
  cout << "Directory " << dir_array[ret] << " changed" << endl;

Voir: http://msdn.microsoft. com / fr-us / library / ms687025 (VS.85) .aspx

Voir les news sur les newsgroups professionnels Win32 api: //comp.os.ms-windows.programmer.win32 pour les échantillons MS connus (code C) (depuis 90 ...)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top