Если для дескриптора файла и тома включено кэширование записи, операция с файлом может завершиться с копией памяти в кэш, которая будет отложена позже. Поскольку фактического ввода-вывода не происходит, в этом случае нет причин выполнять асинхронный ввод-вывод.
Внутренне каждая операция ввода-вывода представлена IRP (пакет запроса ввода-вывода). Он создается ядром и передается файловой системе для обработки запроса, где он проходит через многоуровневые драйверы, пока запрос не станет действительной командой контроллера диска. Этот драйвер сделает запрос, пометит IRP как ожидающий и вернет управление потоком. Если дескриптор был открыт для перекрывающегося ввода-вывода, ядро немедленно возвращает управление вашей программе. В противном случае ядро будет ожидать завершения IRP, прежде чем вернуться.
Однако не все операции ввода-вывода проходят на диск. Файловая система может определить, что запись должна быть кэширована, а не записана позднее. Существует даже специальный путь для операций, который может быть полностью выполнен с использованием кэша, называемый fast IO . Даже если вы делаете асинхронный запрос, быстрый ввод-вывод всегда является синхронным, поскольку он просто копирует данные в кэш и из него.
Монитор процесса в расширенном режиме вывода отображает различные режимы и будет отображаться пустым в поле состояния во время ожидания IRP.
Существует ограничение на количество данных, которые могут быть сохранены в кэше записи. После заполнения операции записи не будут завершены немедленно. Попробуйте записать много данных одновременно с майскими операциями.