Стек драйверов IEEE 1394

На следующей схеме показан стек драйверов IEEE 1394 с новым драйвером автобуса 1394 и поддерживаемыми корпорацией Майкрософт клиентскими драйверами 1394.

схема, иллюстрирующая стек драйверов ieee 1394.

Драйвер клиента для устройства, подключающегося к драйверу автобуса IEEE 1394, находится на вершине стека драйверов IEEE 1394. Драйвер автобуса предоставляет аппаратно-независимый интерфейс к шине IEEE 1394. Драйвер устройства взаимодействует с устройством, отправляя irp, которые обрабатываются драйвером шины IEEE 1394. До Windows 7 драйвер автобуса представлял собой сочетание драйвера порта (1394bus.sys) и основного драйвера мини-порта для хост-контроллера системной платы (ochi1394.sys). В Windows 7 и более поздних версиях устаревшие драйверы портов и мини-портов заменяются 1394ohci.sys, монолитным драйвером автобуса IEEE 1394, который реализуется с помощью платформы драйверов в режиме ядра (KMDF). Драйвер 1394ohci.sys автобуса полностью обратно совместим с устаревшими водителями автобуса 1394. Дополнительные сведения о некоторых известных различиях в поведении нового водителя автобуса и устаревших водителей автобуса 1394 см. в статье IEEE 1394 Bus Driver in Windows 7.

На следующем рисунке показана связь между устаревшими и новыми водителями автобусов 1394.

Схема, показывающая связь между устаревшими и новыми водителями автобусов 1394.

Чтобы выполнять команды устройствам, подключенным к шине, водители выдают IRP_MJ_DEVICE_CONTROL IRP с IOCTL_1394_CLASS кода управления. Драйвер упаковает параметры в блок запросов ввода-вывода IEEE 1394 (IRB) и передает на него указатель в члене Parameters.Others.Argument1 IRP. Элемент FunctionNumber IRB определяет тип операции, а член u — операцию. Драйвер шины использует IOCTL_1394_CLASS IRP для представления интерфейса как для шины, так и для контроллера узла.

Структура IRB содержит параметры, которые применяются к каждому запросу шины и параметрам, зависящим от запроса. Элемент U IRB содержит параметры, относящиеся к запросу, в объединении структур данных, по одному для каждого типа запроса.

Во время нормальной работы драйверы получают обычные запросы ввода-вывода (например , IRP_MJ_READ), преобразуют их в соответствующую операцию IEEE 1394 и отправляют эти операции на устройство через IOCTL_1394_CLASS.

Драйвер шины IEEE 1394 в Windows 7