2011-04-26 76 views
1

我正在構建一個驅動程序,我想讀取一些文件。 有什麼辦法可以使用「ZwReadFile()」或類似的函數來逐行讀取文件的 的內容,這樣我就可以循環處理它們。在內核模式下讀取文件

MSDN中的文檔聲明: - ZwReadFile從給定的ByteOffset或當前文件位置開始讀取到指定的Buffer中。它在下列條件之一時終止讀操作:

  1. 緩衝區已​​滿,因爲Length參數指定的字節數已被讀取。因此,沒有更多數據可以放入沒有溢出的緩衝區。
  2. 在讀取操作期間到達文件末尾,因此文件中沒有更多數據要傳輸到緩衝區中。

謝謝。

回答

1

不,沒有。你將不得不創建一個包裝來實現你想要的。

但是,考慮到內核模式代碼有可能導致系統崩潰而不是它運行的進程崩潰,所以您必須確保問題,例如usermode中已知的長行等問題不會導致問題。

如果數據量(並且將保持)低於哪些註冊表值可以容納的閾值,則應該使用該值。尤其是REG_MULTI_SZ,它具有您正在查找的屬性(「行式」存儲數據)。

0

在這種情況下,除非性能是一個關鍵(如'實時'),那麼我會通過過濾到用戶模式的服務或應用程序。將文件名發送給應用程序進行處理。用戶模式應用程序更容易測試並且更易於調試。它不會藍屏或掛你的盒子。

相關問題