共用方式為


IoIsOperationSynchronous 函式 (ntifs.h)

IoIsOperationSynchronous 例程會判斷指定的 IRP 是否代表同步或異步 I/O 要求。

語法

BOOLEAN IoIsOperationSynchronous(
  [in] PIRP Irp
);

參數

[in] Irp

作業之 IRP 的指標。

傳回值

如果作業是同步的,IoIsOperationSynchronous 會傳回 TRUE,否則為 FALSE。

言論

IoIsOperationSynchronous 會根據下列條件,判斷指定的 IRP 要求同步或異步 I/O 作業:

  • 如果 IRP 要求異步分頁 I/O,即使其中一個其他條件成立,作業也是異步的。

  • 如果 IRP 要求同步分頁 I/O,則作業是同步的。

  • 如果檔案物件已針對同步 I/O 開啟,則作業是同步的。

  • 如果在 IRP 中設定IRP_SYNCHRONOUS_API旗標,則作業是同步的。 此旗標是針對作業所設定,例如 ZwQueryInformationFileZwSetInformationFile,即使對已針對異步 I/O 開啟的檔案對象執行也一樣。

  • 如果上述條件都不是 true,則作業是異步的。

IoIsOperationSynchronous 如果 IRP 包含 IOCTL 或 FSCTL 要求,且具有以 METHOD_BUFFERED 定義的 I/O 或文件系統控件程式代碼,即使檔案對象已針對異步 I/O 開啟,也會傳回 TRUE。 這類要求可能會由文件系統同步提出,但這在所有情況下都不一定成立。

要求

要求 價值
目標平臺 普遍
標頭 ntifs.h (include Ntifs.h)
連結庫 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 任何層級

另請參閱

IRP

IoBuildSynchronousFsdRequest

IoCreateFile

IoCreateFileEx

IoCreateFileSpecifyDeviceObjectHint

ZwCreateFile

ZwQueryInformationFile

ZwSetInformationFile