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
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.
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.
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).
- 1. API de notificación para Windows
- 2. Notificación de cambio del sistema de archivos a nivel de archivos en Mac OS X
- 3. ¿La mejor API para audio de bajo nivel en Windows?
- 4. Sistema de archivos en memoria para Windows
- 5. Contenedor .NET para la funcionalidad de la API de Windows
- 6. ¿Cuál es la mejor solución de VCS para Windows?
- 7. ¿Cuál es la mejor y más completa implementación de los comandos del sistema Unix para Windows?
- 8. ¿Cuál es la función de la API de Win32 para usar para eliminar una carpeta?
- 9. ¿Qué protocolo es mejor para la transferencia de archivos?
- 10. mejor estrategia para escribir ganchos para la subversión en Windows
- 11. ¿Cuál es la mejor API para combinar C + 11 asincrónico/futuros con IO asíncrono de Windows?
- 12. ¿Cuál es la "mejor práctica" para la ubicación de los archivos de registro del servicio de Windows?
- 13. Mejor CMS para usar en Windows Azure
- 14. cuál es la mejor API del cliente HBase para java
- 15. ¿Hay una API para acceder al sistema de archivos ZFS?
- 16. ¿Cuál es el mejor control de navegador web para usar en la aplicación Windows Form?
- 17. ¿Cuál es la mejor herramienta para analizar archivos de registro?
- 18. Notificación de cambio de texto para un NSTextField
- 19. ¿Cuál es la mejor estrategia para usar Windows Azure como sistema de almacenamiento de archivos? Con las capacidades de descarga http
- 20. Windows API para extraer archivos zip?
- 21. Mejor ubicación para archivos de registro de excepción (Windows)
- 22. Mejor temporizador para usar en un servicio de Windows
- 23. ¿Cuál es la mejor práctica para C++ Public API?
- 24. ¿Cuál es la mejor manera de comparar programas en Windows?
- 25. Sistema de notificación en raíles
- 26. ¿Cuál es la mejor manera de adaptar este sistema de seguridad para tratar la herencia múltiple?
- 27. La mejor manera de crear un sistema de notificación múltiple en PHP
- 28. ¿Es mejor usar WPF en Windows Forms?
- 29. ¿Usar GVim en Windows para editar archivos remotos de Linux?
- 30. Mejor sistema de archivos distribuidos para la granja de almacenamiento linux
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. –
sry bajé por accidente ahora no puedo votar – clyfe