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旗標,則作業是同步的。 此旗標是針對作業所設定,例如 ZwQueryInformationFile 和 ZwSetInformationFile,即使對已針對異步 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 | 任何層級 |