共用方式為


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