FindFirstChangeNotification è la migliore API da utilizzare per la notifica di modifica del file system su Windows?

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

Domanda

Sono nuovo nella programmazione di Windows e sto cercando di ricevere una notifica di tutte le modifiche al file system (simile alle informazioni visualizzate da FileMon di SysInternals, ma tramite un'API).È una FindFirstChangeNotification per ciascuna unità (non di rete, non sostituita) la soluzione migliore o esistono altre API C/C++ più adatte?

È stato utile?

Soluzione

FindFirstChangeNotification va bene, ma per una potenza leggermente maggiore dovresti usare ReadDirectoryChangesW. (In effetti, è addirittura consigliato nella documentazione!)

Non richiede un puntatore a funzione, richiede la decodifica manuale di un buffer non elaborato, utilizza nomi di file Unicode, ma generalmente è migliore e più flessibile.

D'altra parte, se vuoi fare quello che fa FileMon, probabilmente dovresti fare quello che fa e usa FileMon IFS per creare e installare un filtro del file system.

Altri suggerimenti

Esistono altri modi per farlo, ma la maggior parte di essi comporta uno sforzo da parte tua (o riduce le prestazioni della tua app, oppure devi bloccare un thread per usarli, ecc.).FindFirstChangeNotification è un po' complicato se non sei abituato a gestire puntatori a funzioni, ecc., ma ha il pregio di far sì che il sistema operativo svolga la maggior parte del lavoro per te.

In realtà FileSystemWatcher funziona perfettamente con le unità di rete condivise.Lo sto utilizzando proprio adesso in un'applicazione che, tra le altre cose, monitora le modifiche del file system.(www.tabbles.net).

È possibile utilizzare la classe FileSystemWatcher.Molto efficiente ma non può funzionare con le unità condivise di rete.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top