Поделиться через


Пример запроса ввода-вывода — обзор

На следующем рисунке показан обзор того, что происходит при открытии подсистемы файлового объекта, представляющего файл данных от имени приложения.

схема, иллюстрирующая открытие объекта файла.

  1. Подсистема вызывает системную службу ввода-вывода для открытия именованного файла.

  2. Диспетчер ввода-вывода вызывает диспетчер объектов, чтобы найти именованный файл и помочь разрешить любые символьные ссылки для объекта файла. Он также вызывает монитор ссылок на безопасность, чтобы убедиться, что подсистема имеет правильные права доступа для открытия этого объекта файла.

  3. Если том еще не подключен, диспетчер ввода-вывода временно приостанавливает открытый запрос и вызывает одну или несколько файловых систем, пока один из них не распознает объект файла как то, что он хранится на одном из устройств массового хранения, которые использует файловая система. Когда файловая система подключила том, диспетчер ввода-вывода возобновляет запрос.

  4. Диспетчер ввода-вывода выделяет память и инициализирует IRP для открытого запроса. Для драйверов операция "открыть" эквивалентна запросу "create".

  5. Диспетчер ввода-вывода вызывает драйвер файловой системы, передавая ему запрос ввода-вывода (IRP). Драйвер файловой системы обращается к расположению стека операций ввода-вывода в IRP, чтобы определить, какая операция должна выполняться, проверяет параметры, определяет, находится ли запрошенный файл в кэше, а если нет, то настраивает расположение стека ввода-вывода следующего уровня драйвера в IRP.

  6. Оба драйвера обрабатывают IRP и выполняют запрошенную операцию ввода-вывода, вызывая подпрограммы поддержки режима ядра, предоставляемые диспетчером ввода-вывода и другими системными компонентами (не показаны на предыдущем рисунке).

  7. Драйверы возвращают IRP диспетчеру операций ввода-вывода с блоком состояния ввода-вывода в IRP, чтобы указать, выполнена ли запрошенная операция успешно или почему она завершилась ошибкой.

  8. Диспетчер ввода-вывода получает состояние ввода-вывода из IRP, поэтому он может возвращать сведения о состоянии через защищенную подсистему исходному вызывающему объекту.

  9. Менеджер ввода-вывода освобождает завершенный IRP.

  10. Диспетчер ввода-вывода возвращает дескриптор для объекта файла подсистеме, если открытая операция была успешной. Если произошла ошибка, она возвращает соответствующее состояние подсистеме.

После того как подсистема успешно открывает файловый объект, представляющий файл данных, устройство или том, она использует возвращенный дескриптор для идентификации этого объекта файла в последующих запросах операций ввода-вывода (обычно считывания, записи или управления устройством ввода-вывода). Для выполнения такого запроса подсистема вызывает системные службы ввода-вывода. Диспетчер ввода-вывода направляет эти запросы в виде IRP, которые отправляются соответствующим драйверам.