2008-08-19 9 views
17

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?¿Es FindFirstChangeNotification la mejor API para usar para la notificación de cambio de sistema de archivos en Windows?

Respuesta

22

FindFirstChangeNotification está muy bien, pero para poder poco más definitiva que debe utilizar ReadDirectoryChangesW. (De hecho, es incluso recomendable en la documentación!)

que no requiere un puntero de función, esto le permite manualmente requiere decodificar un buffer en bruto, usa nombres de archivo 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 to create and install a file system filter.

+0

Al final opté por ReadDirectoryChangesW y me divertí trabajando en cómo convertir el búfer devuelto en un formulario que podía devolver a mi código Java, pero definitivamente hace lo que quiero. –

+0

sry bajé por accidente ahora no puedo votar – clyfe

0

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.

-1

Puede usar la clase FileSystemWatcher. Muy eficiente, pero no puede funcionar con unidades compartidas de red.

0

Actualmente, 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).

Cuestiones relacionadas