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.

Re: virtual device needs to allocate an interrupt by Doron

Doron
Thu Jul 10 12:58:42 CDT 2008

this used to work on 32 bit machines, arbitrarily assigning resources to a
root enumerated stack (basically one that does not have a resource
arbritrator somewhere in the tree) will fail.

d

--
Please do not send e-mail directly to this alias. this alias is for
newsgroup purposes only.
This posting is provided "AS IS" with no warranties, and confers no rights.


"pkpk" <pkpk@discussions.microsoft.com> wrote in message
news:AECF50C8-44EC-483D-8C4B-71DAF5FB6600@microsoft.com...
>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.
>