IRP_MJ_FLUSH_BUFFERS (драйверы FS и фильтров)
При отправке
Диспетчер операций ввода-вывода, другие компоненты операционной системы и другие драйверы, работающие в режиме ядра, отправляют запросы IRP_MJ_FLUSH_BUFFERS, когда буферизация данных должна быть сброшена на диск. Его можно отправить, например, если приложение пользовательского режима вызывает функцию Win32, например FlushFileBuffers. (Для драйверов файловой системы и фильтров файловой системы вызов CcFlushCache предпочтительнее, чем отправка IRP.)
Все драйверы файловой системы и фильтров, которые поддерживают внутренние буферы для данных, должны обрабатывать этот IRP, чтобы изменения файловых данных или метаданных могли сохраняться при завершении работы системы.
Операция: драйверы файловой системы
Драйвер файловой системы должен записать на диск все важные данные или метаданные, связанные с объектом файла, и завершить IRP. Дополнительные сведения об обработке этого IRP см. в примере FASTFAT.
Операция: устаревшие драйверы фильтров файловой системы
Драйвер фильтра должен записать на диск все важные данные или метаданные, связанные с объектом файла, и передать этот IRP в следующий драйвер в стеке.
Параметры
Драйвер файловой системы или фильтра вызывает IoGetCurrentIrpStackLocation с заданной IRP, чтобы получить указатель на собственное расположение стека в IRP, как показано в следующем списке как IrpSp. (IRP отображается как Irp.) Драйвер может использовать сведения, заданные в следующих элементах IRP и расположении стека IRP при обработке запроса буферов очистки:
DeviceObject — это указатель на целевой объект устройства.
Irp->IoStatus указывает на структуру IO_STATUS_BLOCK , которая получает окончательное состояние завершения и сведения о запрошенной операции.
IrpSp->FileObject указывает на объект файла, связанный с DeviceObject.
Параметр IrpSp-FileObject> содержит указатель на поле RelatedFileObject, которое также является FILE_OBJECT структурой. Поле RelatedFileObject структуры FILE_OBJECT недопустимо во время обработки IRP_MJ_FLUSH_BUFFERS и не должно использоваться.
IrpSp->MajorFunction имеет значение IRP_MJ_FLUSH_BUFFERS.
См. также раздел
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по