How to make sure the Windows 11 Host chooses MSI instead of MSI-X for interrupt handling.

Sidharthan Srinivasan 40 Reputation points
2026-05-26T10:09:16.82+00:00

Hi Everyone,

I am trying to build a new wifi driver for windows 11 machine with Wificx framework. I have a bluetooth+wifi combo chipset which is connected to the test machine in PCIe bus (M2E slot). The basic chip enumeration process is completed. In the driver code the Rings and Message buffer code is completed.

The issue we are facing right now is,
We are now reverse engineering the linux driver code, but the chip side the interrupt is handled using MSI in firmware. But, when we refer the linux code and write the windows WiFi driver for our chip , we got stuck in this stage.

The windows automatically selects MSI-X based interrupt handling before the actual driver loads (based on the PDO (Physical Device Object : pci.sys). so now we have two choices,

We tried resource filter requirement from our side, but it is deleting the entire resource allocated to BAR0, BAR1 and interrupt. Second method we used is that in the .INF file in our driver code we changed the interrupt to be sent to the host as 1. Kindly check the code change made below

Code change:

[IFX_PCIE.ndi.MSI.AddReg] HKR, Interrupt Management, 0x00000010 HKR, Interrupt Management\MessageSignaledInterruptProperties, 0x00000010 HKR, Interrupt Management\MessageSignaledInterruptProperties, MSISupported,       0x00010001, 1 HKR, Interrupt Management\MessageSignaledInterruptProperties, MessageNumberLimit, 0x00010001, 1

So we need to make the windows to accept the MSI interrupt resource (replicating the same workflow from the linux). Is there any way to make it work? is it possible from the driver side to forcefully make the windows to accept MSI instead of MSI-X?

Regards,
Sidharthan

Windows development | Windows Driver Kit (WDK)

Answer accepted by question author
Danny Nguyen (WICLOUD CORPORATION) 8,725 Reputation points Microsoft External Staff Moderator
2026-05-27T10:04:13.9166667+00:00

Hi @Sidharthan Srinivasan ,

Lychee-Ng’s reply is correct. If a PCIe device exposes both MSI and MSI-X capabilities, Windows will generally prefer MSI-X, and this choice is made by the PCI bus/PNP handling rather than by the function driver. Because of that, the function driver or INF cannot force Windows to fall back to plain MSI when MSI-X is available.

Also, settings such as MSISupported=1 and MessageNumberLimit=1 only indicate support for message-signaled interrupts and can limit the number of messages used, but they do not override MSI-X selection.

So for your follow-up question, the practical path is to make sure the device firmware and the Windows driver both support MSI-X correctly end-to-end if the hardware advertises MSI-X capability. If MSI-only behavior is required, that would generally need to be handled at the hardware/firmware capability level rather than from the Windows driver side.

For reference, please see Introduction to message-signaled interrupts - Windows drivers | Microsoft Learn:

https://learn.microsoft.com/en-ca/windows-hardware/drivers/kernel/introduction-to-message-signaled-interrupts

Was this answer helpful?

1 person found this answer helpful.

1 additional answer

Sort by: Oldest
  1. Lychee-Ng 28,915 Reputation points Microsoft External Staff Moderator
    2026-05-26T14:39:34.7666667+00:00

    Hi Sidharthan Srinivasan,

    That’s an interesting setup you’re trying to achieve, I get how big of a game changer it could be! That said, I want to be direct here so you have realistic expectations and don’t waste time chasing the impossible: At present, Windows does not allow forcing MSI instead of MSI-X from the driver or INF.

    If a PCIe device exposes both capabilities, Windows will automatically select MSI‑X. This is controlled by the PCI bus driver/PnP, not by the function driver. Your current INF settings (with MSISupported, MessageNumberLimit) will only enable MSI support and limit the number of messages. They don’t override MSI‑X selection. For more background, you can refer to Introduction to Message-Signaled Interrupts - Windows drivers | Microsoft Learn

    Also, since your idea is more about a driver‑development / WDK topic, I believe you would find better guidance using development tag or in a driver‑dev forum! Still, I appreciate you sharing your idea on Microsoft Q&A!


    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.

    Was this answer helpful?


Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.