共用方式為


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,如果失敗,則會傳回讀取錯誤。

規格需求

需求
目標平台 Universal
標頭 ks.h (包含 Ks.h)
程式庫 Ks.lib