هل FindFirstChangeNotification هو أفضل واجهة برمجة تطبيقات لاستخدامها في إعلام تغيير نظام الملفات على النوافذ؟
-
08-06-2019 - |
سؤال
أنا جديد في برمجة Windows وأحاول أن يتم إعلامي بجميع التغييرات التي تطرأ على نظام الملفات (على غرار المعلومات التي يعرضها FileMon من SysInternals، ولكن عبر واجهة برمجة التطبيقات).هل يعتبر FindFirstChangeNotification لكل (غير متصل بالشبكة، وغير فرعي) أفضل رهان لي أم أن هناك واجهات برمجة تطبيقات C/C++ أخرى أكثر ملاءمة؟
المحلول
FindFirstChangeNotification
جيد، ولكن للحصول على طاقة نهائية أكثر قليلاً يجب أن تستخدمها ReadDirectoryChangesW.
(في الواقع، يوصى به في الوثائق!)
لا يتطلب الأمر مؤشرًا وظيفيًا، بل يتطلب منك فك تشفير المخزن المؤقت الأولي يدويًا، ويستخدم أسماء ملفات Unicode، ولكنه بشكل عام أفضل وأكثر مرونة.
من ناحية أخرى، إذا كنت تريد أن تفعل ما يفعله FileMon، فمن المحتمل أن تفعل ما يفعله FileMon ويستخدمه IFS لإنشاء وتثبيت مرشح نظام الملفات.
نصائح أخرى
هناك طرق أخرى للقيام بذلك، ولكن معظمها يتطلب جهدًا من جانبك (أو الحصول على الأداء من تطبيقك، أو يتعين عليك حظر سلسلة محادثات لاستخدامها، وما إلى ذلك).يعد FindFirstChangeNotification معقدًا بعض الشيء إذا لم تكن معتادًا على التعامل مع مؤشرات الوظائف، وما إلى ذلك، ولكن له ميزة جعل نظام التشغيل يتولى الجزء الأكبر من العمل نيابةً عنك.
في الواقع، يعمل FileSystemWatcher بشكل مثالي مع محركات أقراص الشبكة المشتركة.أنا أستخدمه الآن في تطبيق يقوم، من بين أمور أخرى، بمراقبة نظام الملفات بحثًا عن التغييرات.(www.tabbles.net).
يمكنك استخدام فئة FileSystemWatcher.فعال جدًا ولكن لا يمكنه العمل مع محركات الأقراص المشتركة على الشبكة.