почему нам нужно создать два объекта устройства (PDO и FDO) для одного устройства, подключенного к шине?

Я новичок в Windows, читая драйвер WDM, я столкнулся с объектом устройства (PDO и FDO). Я не могу представить, почему нам нужны 2 разных объекта устройства, так как после загрузки драйвера мы снова создаем FDO в подпрограмме ADDDevice. мы можем использовать там PDO, так как он представляет одно и то же устройство.


person uday singh    schedule 16.10.2013    source источник


Ответы (1)


PDO и FDO должны быть отдельными объектами, поскольку они используют разные драйверы устройств. Например, устройство PCI NIC будет иметь PDO, сгенерированный драйвером устройства для шины PCI, и FDO, сгенерированный драйвером устройства для NIC.

Иногда шина и устройство используют один и тот же драйвер, и в этом случае вам не нужен FDO. Вы можете использовать необработанный PDO, который объединяет PDO и FDO в одном объекте устройства.

См. Пример стека устройств WDM в MSDN для изображения и PDO, часть 1 для краткого описания.

person Harry Johnston    schedule 17.10.2013
comment
Спасибо за ваш ответ, в случае приготовленного pdo, правильно ли сказать, что PDO предназначен для установки устройства, а FDO для установки драйвера этого конкретного устройства, которое подключено к шине .... и не могли бы вы привести мне пример для создание сырого pdo ????? - person uday singh; 18.10.2013
comment
PDO используется для обнаружения устройства, а также при работе с устройством. Например, когда драйверы устройств сетевой карты хотят отправить команду на физическую сетевую карту, эта команда должна пройти по шине PCI. FDO отправляет команду PDO, а PDO отвечает за передачу ее физическому устройству. - person Harry Johnston; 22.10.2013
comment
Необработанные PDO обычно используются, когда архитектура драйвера позволяет использовать воображаемую шину или когда устройство имеет встроенную шину. Пример первого (устройства класса HID) находится в связанной статье. Примером последнего может быть, скажем, одно USB-устройство, которое сочетает в себе Bluetooth и WAN; один из способов сделать это — встроить стандартный USB-концентратор, но может быть дешевле встроить специальную шину. Тогда один и тот же драйвер сможет поддерживать пользовательскую шину, bluetooth и глобальную сеть, и все это в одном необработанном PDO. - person Harry Johnston; 22.10.2013