AHCI controller to be enabled in Hyper-V

Syed Faisal 20 Reputation points
2026-05-05T11:26:49.1333333+00:00

We were using VMware earlier and did not encounter any issues with enabling AHCI mode. Now we are on Hyper-V VM and My current development work specifically involves kernel driver development in AHCI mode. Could you please advise if any additional configuration or steps are required to have AHCI mode in Hyper-V VM

In another scenario on Hyper-v VM, when Secure Boot is disabled and test signing is enabled, rebooting the VM results in a BSOD with a WDF violation. I want to clarify that no unsigned kernel drivers are installed—only the default Windows kernel drivers are present. Do you have any insight into the possible cause of this issue, or any workaround to resolve it?

Windows for business | Windows Server | Storage high availability | Virtualization and Hyper-V
0 comments No comments

Answer accepted by question author
HLBui 11,095 Reputation points Independent Advisor
2026-05-05T12:21:07.4766667+00:00

Good day Syed Faisal

Hyper‑V doesn’t expose AHCI mode the same way VMware does, so you won’t find a simple toggle to enable it. Hyper‑V’s virtual disk controller is synthetic (basically optimized for virtualization) and doesn’t emulate AHCI hardware. For kernel driver development, that means you’ll need to test against the synthetic controller or spin up a physical machine/VM platform that actually exposes AHCI. In short: no extra config in Hyper‑V will magically give you AHCI mode.

On the second scenario with Secure Boot off and test signing on the WDF violation BSOD is usually tied to driver signing enforcement quirks. Even if you’re not loading unsigned drivers, Windows can get touchy when test signing is enabled, especially in a VM environment. Sometimes the crash is triggered by default system drivers being re‑validated under test signing mode. A couple of workarounds: keep Secure Boot enabled while using test signing, or if you must disable Secure Boot, try disabling test signing and use properly signed test certificates for your driver builds. Also worth checking that your VM’s integration services and Hyper‑V host are fully patched, since older builds had some nasty WDF bugs.

So : Hyper‑V won’t give you AHCI, and the BSOD is more about how Windows handles test signing in that environment than your drivers themselves

If everything is okay, don't forget to share your experience with the issue by "Accept answer". If you need more information, feel free to leave a message. We are happy to help!

Was this answer helpful?

1 person found this answer helpful.
0 comments No comments

1 additional answer

Sort by: Most helpful
  1. AI answer

    2026-05-05T11:27:11+00:00

    Hyper-V does not expose a virtual AHCI controller to guest VMs. The synthetic storage controller that Hyper-V presents is not AHCI-based and cannot be switched into AHCI mode through configuration. For kernel driver development that specifically targets AHCI, testing must be done either on:

    • Physical hardware with AHCI enabled in firmware, or
    • A virtualization platform that emulates an AHCI controller and allows attaching a disk to that emulated controller.

    Hyper-V configuration changes (generation 1 vs. generation 2 VM, different virtual disk types, etc.) do not provide an AHCI mode, so no additional Hyper-V steps can enable AHCI inside the VM.

    For the second scenario (Hyper-V VM, Secure Boot disabled, test-signing enabled, BSOD with WDF type violation and only inbox drivers present), the context provided is focused on memory integrity / VBS and driver compatibility, which are the main kernel-mode hardening features that can interact with WDF drivers.

    Key points from the context that are relevant to troubleshooting:

    1. Memory integrity (HVCI) is a virtualization-based security (VBS) feature that changes how kernel memory is allocated and protected. It enforces that executable kernel pages are never writable and that allocations that request executable memory must comply with strict rules.
    2. Drivers that allocate executable memory incorrectly, or that rely on writable+executable mappings, can become incompatible when memory integrity is enabled, leading to crashes.
    3. The documentation describes how to detect and fix such incompatibilities using Code Analysis warnings (C30029–C30035) and by ensuring that drivers do not request executable pool types or executable MDL mappings.

    Given that only inbox drivers are present, a WDF violation after changing boot configuration (disabling Secure Boot and enabling test-signing) strongly suggests an interaction with VBS / memory integrity rather than with unsigned third-party drivers. The following checks and mitigations are supported by the context:

    1. Verify whether memory integrity (HVCI) is enabled in the VM
      • Use System Information (msinfo32) and check the line “Virtualization-based security Services Running”. For memory integrity, it should show “Hypervisor enforced Code Integrity”.
      • Alternatively, use the Windows Security app: Settings → Update & Security → Windows Security → Device security → Core isolation details → Memory integrity.
    2. If the BSOD correlates with memory integrity being enabled, then the crash is likely due to a driver (even an inbox one) hitting one of the forbidden patterns described in the HVCI compatibility guidance:
      • Requesting executable pool types.
      • Using executable page protections for allocations.
      • Using executable MDL mappings instead of MdlMappingNoExecute.
      • Having an image section that is both executable and writable.
    3. For custom drivers under development (even if not yet installed in the failing VM), the same rules apply when they are eventually introduced. The context recommends:
      • Running Code Analysis for Drivers and addressing warnings C30029–C30035, which specifically flag executable memory allocation issues.
      • Ensuring all pool types used include the NX (no-execute) flag.
      • Ensuring MDL mappings use MdlMappingNoExecute where appropriate.
    4. Programmatic detection of memory integrity
      • From kernel mode, NtQuerySystemInformation with SYSTEM_CODEINTEGRITY_INFORMATION can be used to detect whether memory integrity is active (0x400 flag). This allows drivers to adjust behavior when running under HVCI.

    Workaround direction based on the above:

    • If the BSOD only occurs when memory integrity is active, and the environment is strictly for development/testing, temporarily disabling memory integrity (while keeping other security features as needed) can avoid the crash while investigating the offending driver behavior.
    • For any in-house driver code, use the Code Analysis rules and the HVCI compatibility table to remove executable allocations and W+X sections so that the driver is compatible when memory integrity is re-enabled.

    The context does not provide a specific known issue or hotfix for inbox drivers causing WDF violations in the exact configuration described, so the supported guidance is to:

    • Confirm whether memory integrity is enabled and whether disabling it changes the behavior.
    • Ensure any custom drivers follow the HVCI compatibility rules so they do not trigger WDF or kernel violations when VBS/memory integrity is active.

    References:

    AI-generated content may be incorrect. Read our transparency notes for more information.

    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.