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


Поддержка PnP и управления питанием в программно-реализованных драйверах

Программные драйверы — это драйверы, которые не используют оборудование. Некоторые драйверы, доступные только для программного обеспечения, находятся в стеке драйверов, который не обращается к оборудованию. Так как эти драйверы не обращаются к оборудованию, они обычно не должны выполнять какие-либо операции управления питанием или PnP.

Другие драйверы только для программного обеспечения — это драйверы фильтров: они находятся в стеке драйверов, которые обращаются к оборудованию, но драйверы фильтров не обращаются к оборудованию. Когда драйвер фильтра получает запрос ввода-вывода, указывающий операцию управления питанием или PnP, драйвер обычно передает запрос следующему драйверу. Платформа перехватывает эти запросы и передает их, поэтому драйверы на основе платформы никогда не видят запросы.

Если вы пишете драйвер только для программного обеспечения, драйвер создает объекты устройств, но обычно не требуется предоставлять функции обратного вызова событий для обработки событий PnP или управления питанием. Если драйвер использует объекты очереди платформы, необходимо задать элемент PowerManaged структуры конфигурации очереди WDF_IO_QUEUE_CONFIG как WdfFalse или WdfUseDefault.

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