I am working on a device driver that interacts with a custom hypervisor. The
hypervisor can inject an interrupt into the guest OS (Windows Vista 64-bit)
and my driver must handle it.
The driver needs to request an available interrupt from the OS, and notify
the hypervisor what interrupt vector to use during injection.
I am new to Windows device drivers. My driver uses the WDF framework.
I have created a custom bus driver that enumerates a single child function
driver (I have used the Toaster example as the basis for my code).
In the bus driverâ??s EvtDeviceResourceRequirementsQuery handler I add an
IO_RESOURCE_DESCRIPTOR of type CmResourceTypeInterrupt. I really donâ??t care
what interrupt vector to inject, so I specify the MinimumVector as 32 and
MaximumVector as 255.
My assumption is that the WDF framework will pass the resource requirements
list to the PnP manager, allocate an interrupt that meets the above
requirements, and pass it to my function driver in the
EvtDevicePrepareHardware handler.
However, when the bus driver enumerates the child function driver, after the
call to EvtDeviceResourceRequirementsQuery I see a message in WinGDB:
NTOSPNP:Unable to setup Arbiter and Translators
The function driverâ??s EvtDevicePrepareHardware handler is never called.
Obviously I am doing something incorrect. How can my driver reserve an
interrupt that I could later use to interact with the hypervisor?
P.