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


Диспетчер ввода-вывода Windows Kernel-Mode

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

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

Система ввода-вывода Windows предоставляет многоуровневую модель драйвера, называемую стеками. Как правило, irP переходят от одного драйвера к другому в одном стеке для упрощения обмена данными. Например, драйвер джойстика должен будет взаимодействовать с USB-концентратором, который, в свою очередь, должен будет обмениваться данными с хост-контроллером USB, который затем должен будет обмениваться данными через шину PCI с остальным оборудованием компьютера. Стек состоит из драйвера джойстика, USB-концентратора, хост-контроллера USB и шины PCI. Это взаимодействие координируется путем того, чтобы каждый драйвер в стеке отправлял и получал IRP.

Нельзя подчеркнуть, что ваш водитель должен своевременно отправлять и получать IRP для эффективной работы всего стека. Если драйвер является частью стека и неправильно получает, обрабатывает и не передает информацию, драйвер может привести к сбоям системы.

Дополнительные сведения об IRP см. в разделе Обработка IRP.

Дополнительные сведения о стеках драйверов см. в разделе Объекты устройств и стеки устройств.

Технические навыки программирования, связанные с управлением вводом-выводом, см. в разделе Методы программирования диспетчера ввода-вывода.

Подпрограммы, предоставляющие прямой интерфейс для диспетчера ввода-вывода, обычно имеют префикс "Io"; Например, IoCreateDevice. Список процедур диспетчера ввода-вывода см. в разделе Процедуры диспетчера ввода-вывода.

Список процедур, связанных с IRPS, см. в разделе IrPs.

Диспетчер ввода-вывода имеет два подкомпонента: диспетчер Plug and Play и диспетчер управления питанием. Они управляют функциями ввода-вывода для технологий Plug and Play и управления питанием. Дополнительные сведения об управлении Plug and Play см. в разделе Windows Kernel-Mode Plug and Play Manager, а дополнительные сведения об управлении питанием см. в статье Windows Kernel-Mode Power Manager.