¿Cómo depurar las notificaciones de cambio de archivo obtenidas por FindFirstChangeNotification?

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

Pregunta

Entonces, la pregunta es: recibo algunas notificaciones que no quiero recibir. Pero no sé para qué archivo / directorio los obtuve. ¿Hay alguna manera de saber por qué se activó la notificación?

Si piensa en ReadDirectoryChangesW, incluya un ejemplo de código significativo.

¿Fue útil?

Solución

Si desea que Windows le indique qué archivo o subdirectorio específico cambió, deberá usar ReadDirectoryChangesW . El modo asincrónico es bastante simple si usa una rutina de finalización.

Por otro lado, probablemente obtendrá un mejor rendimiento utilizando Enfoque de puertos de finalización de E / S . Recomendaría descargar el excelente código fuente CDirectoryChangeWatcher como punto de partida. Hay varias trampas que su código le ayudará a evitar, particularmente al analizar los FILE_NOTIFY_INFORMATION registros.

Otros consejos

~ pseudocódigo

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;

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

Ver en las noticias profesionales del grupo de noticias Win32 api: //comp.os.ms-windows.programmer.win32 para muestras de MS conocidas (código C) (desde los años 90 ...)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top