real - ¿FindFirstChangeNotification es la mejor API para usar en notificaciones de cambio de sistema de archivos en Windows?
notificaciones html5 javascript (4)
En realidad, FileSystemWatcher funciona perfectamente con unidades de red compartidas. Lo estoy usando ahora mismo en una aplicación que, entre otras cosas, supervisa el sistema de archivos para detectar cambios. (www.tabbles.net).
Soy nuevo en la programación de Windows y estoy tratando de recibir notificaciones de todos los cambios en el sistema de archivos (similar a la información que muestra FileMon desde SysInternals, pero a través de una API). ¿Es una mejor opción encontrar FindFirstChangeNotification para cada unidad (que no sea de red ni subserver) o hay otras API de C / C ++ más adecuadas?
Hay otras maneras de hacerlo, pero la mayoría implican un esfuerzo de su parte (o tomar rendimiento de su aplicación, o tiene que bloquear un hilo para usarlos, etc.). FindFirstChangeNotification es un poco complicado si no está acostumbrado a tratar con punteros a funciones, etc., pero tiene la virtud de hacer que el sistema operativo haga la mayor parte del trabajo por usted.
Puede usar la clase FileSystemWatcher. Muy eficiente, pero no puede funcionar con unidades compartidas de red.
FindFirstChangeNotification
está bien, pero para obtener un poco más de potencia final, debe utilizar ReadDirectoryChangesW.
(¡De hecho, incluso se recomienda en la documentación!)
No requiere un puntero a la función, requiere decodificar manualmente un búfer en bruto, usa nombres de archivos Unicode, pero en general es mejor y más flexible.
Por otro lado, si quiere hacer lo que FileMon hace, probablemente debería hacer lo que hace FileMon y usar IFS para crear e instalar un filtro de sistema de archivos .