Архитектура Windows NT
программный интерфейс приложений ввода-вывода (I/O API);
диспетчер ввода-вывода;
драйверы файловых систем;
другие драйверы (например, драйверы клавиатуры и драйверы дисков).
Далее эти модули рассматриваются более подробно. 1.3.4.1 Программный интерфейс приложений ввода-вывода (I/O API)
По сути, этот компонент включает функции диспетчера ввода-вывода, предназначенные для более высоких уровней Windows NT, а также компоненты режима ядра, выполняющие операции, связанные с диспетчером печати. Все имена функций программного интерфейса приложений ввода-вывода имеют вид IoXXXX,
где ХХХХ
– строка, после которой указывается список параметров. (Подробная информация приводится в программном инструментарии для разработки драйверов.) В качестве примера функций API можно привести:
интерфейс IoCreateDevice,
предназначенный для создания новых объектов устройств (объекты устройств рассматриваются в разделе 1.4.2);
интерфейс IoCallDriver,
предназначенный для отправки драйверу пакета запроса ввода-вывода (пакеты запроса ввода-вывода рассматриваются в разделе 1.4.3). 1.3.4.2 Диспетчер ввода-вывода (I/O Manager)
Это элемент выполняемого модуля Windows NT; свойственные ему функции перечислены ниже.
Создание пакетов. запроса ввода-вывода (IRP) и направление их соответствующему драйверу, а также перенаправление пакетов запроса ввода-вывода между драйверами.
Удаление и освобождение пакетов запроса ввода-вывода после завершения операции ввода-вывода.
Взаимодействие с диспетчером кэша и другими компонентами NT Executive.
Взаимодействие с диспетчером виртуальной памяти для предоставления файловым системам функций ввода-вывода с записью данных в память.
Мониторинг загруженных файловых систем и их вызов по требованию.
Предоставление поддержки синхронного и асинхронного ввода-вывода. Асинхронный ввод-вывод особенно важен для приложений хранения данных. Например, приложение резервного копирования может использовать асинхронный ввод-вывод для размещения в очереди нескольких запросов, что позволяет полностью загрузить устройство записи на ленту.
Управление буферами для операций ввода-вывода. 1.3.4.3 Драйверы файловых систем
Операционная система предоставляет функции файловых систем с помощью драйверов режима ядра. Система Windows NT поставляется вместе с такими файловыми системами:
NTFS (файловая система NT);
UDFS (универсальная дисковая файловая система);
CDFS (файловая система компакт-дисков);
FAT (таблица размещения файлов).
Драйверы сетевых файловых систем рассматриваются в главе 3. Драйверы файловых систем реализуются средствами инструментария разработки драйверов Windows NT (Windows NT DDK) и дополнительного программного продукта, который предлагается компанией Microsoft – Windows NT Installable File System Kit. Этот инструментарий содержит документацию для различных программных интерфейсов приложений, которые понадобятся при создании драйверов файловой системы, а также пример кода, предназначенного для реализации файловых систем FAT и UDFS.
Драйверы файловой системы аналогичны другим драйверам, поскольку взаимодействуют с диспетчером ввода-вывода и IRP. Драйверы файловой системы являются логическими, так как не взаимодействуют непосредственно с аппаратным обеспечением; например, файловая система не делает различия между дисками с интерфейсом SCSI и с интерфейсом АТА (иногда называемым IDE). Тем не менее драйверы файловой системы отличаются от других драйверов. Некоторые из этих отличий приведены ниже.