Supporting PnP and Power Management in Software-only Drivers

Software-only drivers are drivers that do not access any hardware. Some software-only drivers reside in a driver stack that does not access hardware. Because these drivers do not access hardware, they typically do not have to perform any PnP or power management operations.

Other software-only drivers are filter drivers: they reside in a stack of drivers that do access hardware, but the filter drivers do not access hardware. When a filter driver receives an I/O request that specifies a PnP or power management operation, the driver typically just passes the request to the next driver. The framework intercepts these requests and passes them on, so framework-based drivers never see the requests.

If you are writing a software-only driver, your driver creates device objects but you typically do not need to provide any event callback functions to handle PnP or power management events. If the driver uses framework queue objects, you will need to set the PowerManaged member of the queue's WDF_IO_QUEUE_CONFIG structure to WdfFalse or WdfUseDefault.

A few software-only drivers are also function drivers. In other words, a single driver might act as a software-only driver to support a virtual device that does not access hardware, and as a function driver to support a hardware device.