Is FindFirstChangeNotification die beste API te gebruik vir lêerstelsel verandering kennisgewing op vensters?
-
08-06-2019 - |
Vra
Ek is nuut by vensters programmering en ek probeer om in kennis gestel word van alle veranderings aan die lêer stelsel (soortgelyk aan die inligting wat FileMon van Sysinternals uitstallings, maar via 'n API). Is 'n FindFirstChangeNotification vir elke (nie-netwerk, nie-substed) ry my beste bet of is daar ander meer geskikte C / C ++ APIs?
Oplossing
FindFirstChangeNotification
is goed, maar vir effens meer uiteindelike krag wat jy moet gebruik ReadDirectoryChangesW.
(Trouens, dit is selfs aanbeveel in die dokumentasie!)
Dit maak nie 'n funksie wyser vereis, beteken dit vereis dat jy 'n rou buffer hand te ontsyfer, dit maak gebruik van Unicode lêername, maar dit is oor die algemeen beter en meer buigsaam.
Aan die ander kant, as jy wil om te doen wat FileMon doen, jy moet waarskynlik doen wat FileMon doen en gebruik IFS te skep en installeer 'n lêer stelsel filter .
Ander wenke
Daar is ander maniere om dit te doen, maar die meeste van hulle betrek moeite van jou kant (of neem prestasie van jou jeug, of jy het 'n draad te sluit om dit te gebruik, ens). FindFirstChangeNotification is 'n bietjie ingewikkeld as jy nie gewoond is aan die hantering van funksie wysers, ens, maar dit het die hoofde van die kry van die bedryfstelsel om die grootste deel van die werk te doen vir jou.
Eintlik FileSystemWatcher werk perfek met gedeelde netwerk dryf. Ek gebruik dit nou in 'n aansoek wat, onder andere, monitor die lêerstelsel vir veranderinge. (Www.tabbles.net).
Jy kan FileSystemWatcher klas gebruik. Baie effektief, maar kan nie werk met Network gedeel dryf.