我了解ReadDirectoryChangesW可以同步或異步實作。異步的一般考慮有利于慢速 I/O 操作,反之亦然。
目前,我正在嘗試監視并獲取驅動器上創建的所有新檔案的路徑。這將涉及查看許多子目錄,我不確定此函式中執行的操作到底是什么,以及異步是否適合此用例。
如果有地方可以了解它的作業機制,那就太好了。我已經閱讀了檔案,但它只說明了如何使用它。
謝謝。
uj5u.com熱心網友回復:
ReadDirectoryChanges 是通過向適當的檔案系統驅動程式發出IRP_MJ_DIRECTORY_CONTROL來實作的,具有 IRP_MN_NOTIFY_CHANGE_DIRECTORY 的次要功能代碼。
在檔案系統級別,實作可能總是異步的,除非更改資料已經可以回傳。一般的同步情況很可能由 ReadDirectoryChangesW 處理,代表用戶等待分派的 I/O 請求資料包完成。
選擇同步還是異步呼叫 ReadDirectoryChangesW 應該取決于在等待回應時是否有任何有用的作業可以做。如果不是,那么處理異步 I/O 帶來的麻煩就沒有意義了。如果是(即使只是更新 UI),那么異步路由很可能會更可取。生成一個作業執行緒并讓該執行緒發出呼叫也可能很有用,通常將異步 I/O 代碼與 UI 混合會變得一團糟。一個單獨的作業執行緒可以允許每個作業執行緒只處理一個或另一個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/515597.html
