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,则操作是异步的,即使其他条件之一为 true。
如果 IRP 请求同步分页 I/O,则操作是同步的。
如果为同步 I/O 打开了文件对象,则操作是同步的。
如果在 IRP 中设置了IRP_SYNCHRONOUS_API标志,则操作是同步的。 此标志是为始终同步的操作(如 ZwQueryInformationFile 和 ZwSetInformationFile)设置的,即使对为异步 I/O 打开的文件对象执行也是如此。
如果上述条件均不成立,则操作是异步的。
如果 IRP 包含 IOCTL 或 FSCTL 请求以及使用 METHOD_BUFFERED 定义的 I/O 或文件系统控制代码,即使文件对象已为异步 I/O 打开,IoIsOperationSynchronous 也会返回 TRUE。 文件系统可能会使此类请求同步,但并非在所有情况下都如此。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | ntifs.h (包括 Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 |