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