IoIsOperationSynchronous 函数 (ntifs.h)

IoIsOperationSynchronous 例程确定给定的 IRP 是表示同步 I/O 请求还是异步 I/O 请求。

语法

BOOLEAN IoIsOperationSynchronous(
  [in] PIRP Irp
);

参数

[in] Irp

指向作的 IRP 的指针。

返回值

如果作同步,则 IoIsOperationSynchronous 返回 TRUE,否则返回 FALSE。

言论

IoIsOperationSynchronous 根据以下条件确定给定 IRP 请求同步或异步 I/O作:

  • 如果 IRP 请求异步分页 I/O,则作是异步的,即使其中一个条件为 true 也是如此。

  • 如果 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