Функция IoIsOperationSynchronous (ntifs.h)
Подпрограмма IoIsOperationSynchronous определяет, представляет ли данный IRP синхронный или асинхронный запрос ввода-вывода.
Синтаксис
BOOLEAN IoIsOperationSynchronous(
[in] PIRP Irp
);
Параметры
[in] Irp
Указатель на IRP для операции.
Возвращаемое значение
IoIsOperationSynchronous возвращает значение TRUE, если операция синхронна, в противном случае — FALSE.
Замечания
IoIsOperationSynchronous определяет, запрашивает ли данная операция IRP синхронной или асинхронной операции ввода-вывода в соответствии со следующими условиями:
Если IRP запрашивает асинхронное разбиение ввода-вывода, операция выполняется асинхронно, даже если одно из других условий имеет значение true.
Если IRP запрашивает синхронную разбиение операций ввода-вывода, операция синхронна.
Если объект файла был открыт для синхронного ввода-вывода, операция синхронна.
Если флаг IRP_SYNCHRONOUS_API задан в IRP, операция синхронна. Этот флаг устанавливается для операций, таких как ZwQueryInformationFile и ZwSetInformationFile, которые всегда синхронны, даже если он был открыт для асинхронного ввода-вывода.
Если ни одно из указанных выше условий не имеет значения true, операция выполняется асинхронно.
IoIsOperationSynchronous также возвращает значение TRUE, если IRP содержит запрос IOCTL или FSCTL с кодом управления операцией ввода-вывода или файловой системой, определенным с METHOD_BUFFERED, даже если объект файла был открыт для асинхронного ввода-вывода. Такой запрос, скорее всего, будет синхронизирован файловой системой, но это не обязательно верно во всех случаях.
Требования
Требование | Ценность |
---|---|
целевая платформа | Всеобщий |
заголовка | ntifs.h (include Ntifs.h) |
библиотеки | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | Любой уровень |