KsReadFile 函式 (ks.h)
KsReadFile 函式會對指定的檔案物件執行讀取。 假設呼叫端正在串行化對檔案的存取權,以便針對FO_SYNCHRONOUS_IO檔案物件執行作業。 如果可能的話,函式會嘗試使用 FastIoDispatch,或針對裝置對象產生讀取要求。 所有相關統計數據都會更新。
語法
KSDDKAPI NTSTATUS KsReadFile(
[in] PFILE_OBJECT FileObject,
[in, optional] PKEVENT Event,
[in, optional] PVOID PortContext,
[out] PIO_STATUS_BLOCK IoStatusBlock,
[out] PVOID Buffer,
[in] ULONG Length,
[in, optional] ULONG Key,
[in] KPROCESSOR_MODE RequestorMode
);
參數
[in] FileObject
指定要執行讀取的檔案物件。
[in, optional] Event
選擇性地包含要用於讀取的事件。 如果未傳遞任何事件,則會假設呼叫位於同步檔案物件上。 如果沒有,呼叫端正在等候檔案物件的事件,或可能以異步方式完成。 如果檔案已針對同步 I/O 開啟,則必須 NULL。 如果使用變數,它必須是物件管理員所配置的事件。
[in, optional] PortContext
選擇性地包含完成埠的內容資訊。
[out] IoStatusBlock
指定要傳回狀態資訊的位址。 不論要求者模式為何,這一律會假設為有效的位址。
[out] Buffer
指定要在其中放置數據讀取的緩衝區。 如果需要探查和鎖定緩衝區,則會使用例外狀況處理程式,以及 RequesterMode。
[in] Length
指定傳遞的緩衝區大小。
[in, optional] Key
選擇性地包含索引鍵,如果沒有,則為零
[in] RequestorMode
指出需要產生處理器模式時,要放在讀取 IRP 中。 此外,如果需要探查和鎖定緩衝區,則會使用它。 此變數也會判斷是否可以執行快速 I/O 呼叫。 如果要求者模式不是 KernelMode,但先前的模式是,則無法使用快速 I/O。
傳回值
KsReadFile 函式會在成功時傳回STATUS_SUCCESS、如果動作擱置STATUS_PENDING,或如果失敗,則會傳回讀取錯誤。
要求
要求 | 價值 |
---|---|
目標平臺 | 普遍 |
標頭 | ks.h (包括 Ks.h) |
連結庫 | Ks.lib |