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


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

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

Новый драйвер 1394ohci.sys автобуса полностью обратно совместим с устаревшим драйвером автобуса. В этом разделе описываются некоторые известные различия в поведении нового и устаревшего водителя автобуса 1394.

Примечание

Драйвер 1394ohci.sys — это системный драйвер, который входит в состав Windows. Он автоматически загружается при установке контроллера 1394. Это не распространяемый драйвер, который можно скачать отдельно.

Завершение запроса ввода-вывода

Все запросы ввода-вывода, отправляемые новому водителю автобуса 1394, возвращаются STATUS_PENDING так как драйвер 1394ohci.sys автобуса реализуется с помощью KMDF вместо WDM. Это поведение отличается от поведения устаревшего водителя автобуса 1394, в котором некоторые запросы ввода-вывода выполняются немедленно.

Драйвер клиента должен дождаться завершения запросов ввода-вывода, отправленных новому водителю автобуса 1394. Вы можете указать процедуру завершения ввода-вывода, которая вызывается после завершения запроса. Состояние завершенного запроса ввода-вывода находится в IRP.

Извлечение ПЗУ конфигурации

Новый драйвер автобуса 1394 пытается использовать асинхронные блочные транзакции на более высокой скорости шины для получения содержимого ПЗУ конфигурации узла. Устаревший драйвер шины 1394 использует асинхронные квадлетные операции чтения со скоростью S100 или 100 мегабит в секунду (Мбит/с). Драйвер 1394ohci.sys шины также использует значения, указанные в записях создания и max_rom заголовка ПЗУ конфигурации узла, чтобы улучшить получение оставшегося содержимого ПЗУ конфигурации. Дополнительные сведения о том, как новый драйвер шины 1394 извлекает содержимое ПЗУ конфигурации узла, см. в разделе Извлечение содержимого ПЗУ конфигурации узла IEEE 1394.

Поддержка IEEE-1394-1995 PHY

Драйверу 1394ohci.sys шины требуется физический уровень (PHY), поддерживающий IEEE-1394a или IEEE-1394b. Он не поддерживает PHY, поддерживающий IEEE-1394-1995. Это требование связано с 1394ohci.sys исключительного использования водителем автобуса коротких (арбитрированных) сбросов шины.

Использование структуры NODE_DEVICE_EXTENSION

Драйвер клиента может ссылаться на расширение устройства в драйвере шины 1394, связанном с физическим объектом устройства (PDO) для устройства, которым управляет драйвер клиента. Это расширение устройства описывается структурой NODE_DEVICE_EXTENSION . В 1394ohci.sys эта структура остается в том же расположении, что и у устаревшего водителя автобуса 1394, но нестатические элементы структуры могут быть недопустимыми. Когда водитель клиента использует новый водитель автобуса 1394, он должен убедиться, что данные, доступ к которым осуществляется в NODE_DEVICE_EXTENSION , являются допустимыми. Статические члены NODE_DEVICE_EXTENSION , содержащие допустимые данные: Tag, DeviceObject и PortDeviceObject. Все остальные элементы NODE_DEVICE_EXTENSION являются нестатическими, на которые клиентский драйвер не должен ссылаться.

Оптимизация количества разрывов

Поведение драйвера 1394ohci.sys шины по умолчанию заключается в оптимизации количества разрывов при обнаружении только устройств IEEE 1394a на шине 1394, за исключением локального узла. Например, если система, работающая 1394ohci.sys, имеет контроллер узла, соответствующий стандарту IEEE 1394b, но все устройства в шине соответствуют стандарту IEEE 1394a, то новый водитель автобуса 1394 пытается оптимизировать количество разрывов.

Оптимизация количества разрывов происходит только в том случае, если драйвер 1394ohci.sys шины определяет, что локальный узел является диспетчером шины.

Драйвер 1394ohci.sys шины определяет, соответствует ли устройство стандарту IEEE-1394a, по параметру скорости в пакете самостоятельной идентификации узла. Если узел задает оба бита в поле speed (sp) в пакете с самостоятельным идентификатором, то 1394ohci.sys считает, что узел соответствует СТАНДАРТУ IEEE-1394b. Если поле скорости содержит любое другое значение, то 1394ohci.sys считает, что узел соответствует стандарту IEEE-1394a. Используемое значение счетчика разрывов основано на таблице E-1 в спецификации IEEE-1394a, которая предоставляет число разрывов как функцию прыжков. Драйвер 1394ohci.sys автобуса не вычисляет количество разрывов. Поведение счетчика разрывов по умолчанию можно изменить с помощью значения реестра. Дополнительные сведения см. в статье Изменение поведения по умолчанию драйвера шины IEEE 1394.

Изменения в интерфейсе драйвера устройства (DDI)

В Windows 7 1394 DIS были изменены для поддержки более высокой скорости, как определено в спецификации 1394b, и улучшены для упрощения разработки клиентских драйверов 1394. Дополнительные сведения об общих изменениях DDI, поддерживаемых новым драйвером шины 1394, см. в статье Изменения интерфейса драйвера устройств (DDI) в Windows 7.

Стек драйверов IEEE 1394
Получение содержимого ПЗУ конфигурации узла IEEE 1394