HLK "Wdf - Check Umdf/Kmdf Function Table Test" fails for UMDF 2 driver installed to Driver Store (DIRID 13)

Paul Sievers 25 Reputation points
2026-11-12T09:18:46.32+00:00

Both "Wdf - Check Umdf Function Table Test" and "Wdf - Check Kmdf Function Table Test" fail for our UMDF 2 driver. The driver itself does not seem to be the cause: the test looks for the driver binary in a fixed location, %windir%\system32\Drivers\UMDF, but the binary of a Windows 11 compliant UMDF 2 driver lives in the Driver Store (DIRID 13). The INF cannot be changed to satisfy the test, because InfVerif rejects any destination other than DIRID 13.

Is this a known limitation of the test, and how should it be handled in a submission (playlist filter, known issue, or a different expected layout)?

ENVIRONMENT

  • HLK kit: 10.1.26100.8328 (client and controller)
  • Test system: Windows 11 25H2 x64, build 26200 (platform code WINDOWS_v100_X64_25H2_FULL)
  • Driver: UMDF 2.31, class Ports, x64 only
  • Device: root-enumerated (ROOT\PORTS\0000), reflector WUDFRd.sys (KMDF 1.35)
  • Features selected include: Device.DevFund.DriverFramework.UMDF, ...KMDF, ...AllDrivers, ...UniversalDriver
  • INF: PnpLockdown=1, DefaultDestDir = 13, ServiceBinary = %13%\virtualserial2.dll

FAILING TESTS

Command lines as run by HLK:

TE.exe /enablewttlogging /appendwttlogging /errorOnCrash checkwdffunctiontable.dll
  /name:CheckWdfFunctionTable::WdfFuncTableCertificationTests::UmdfFuncTableCheckSizeWithDQ
  /p:"DQ=(HardwareIds='UMDF\MSAufzugService' OR DeviceId='ROOT\PORTS\0000')" ...

TE.exe ... checkwdffunctiontable.dll
  /name:CheckWdfFunctionTable::WdfFuncTableCertificationTests::KmdfFuncTableCheckSizeWithDQ ...

Relevant lines from Te.wtl (identical in both runs; the Kmdf test also checks the UMDF binary of the device):

Checking the Function table count for the binary: C:\WINDOWS\system32\Drivers\wudfrd.sys
C:\WINDOWS\system32\Drivers\wudfrd.sys : Version 1.35 TableCount 458 - Valid KMDF driver
Checking the Function table count for the binary: C:\WINDOWS\system32\Drivers\UMDF\virtualserial2.dll
C:\WINDOWS\system32\Drivers\UMDF\virtualserial2.dll - Not a UMDF driver, hr = 0x7e

0x7e is ERROR_MOD_NOT_FOUND: LoadLibraryExW could not find the file. The installed driver is not at that path.

ANALYSIS

  • The strings in checkwdffunctiontable.dll (from the HLK controller's tests\amd64\wdftest\bin share) show that the test takes the file name from the WDTF property Wdf::UmdfDriverBinaryNames, prepends the fixed string \Drivers\UMDF\ and then calls LoadLibraryExW.
  • Our binary is installed from the Driver Store, as required for Windows 11: C:\Windows\System32\DriverStore\FileRepository\virtualserial2.inf_amd64_...\virtualserial2.dll Nothing exists under system32\Drivers\UMDF.
  • Moving the binary to %12%\UMDF in the INF (UMDriverCopy = 12,UMDF and ServiceBinary = %12%\UMDF\virtualserial2.dll) fails InfVerif at build time: error 1322: Destination file path 'C:\WINDOWS\System32\drivers\UMDF' for file 'virtualserial2.dll' is not isolated to DIRID 13.

So the INF cannot satisfy both the driver isolation rules and this test.

EVIDENCE THAT THE DRIVER IS FINE

As a diagnostic step only (not part of the driver package), we copied the installed virtualserial2.dll from the Driver Store to C:\Windows\System32\Drivers\UMDF\ on the test system and re-ran both tests. Both passed. We removed the copy afterwards.

Sequence on the test system (file events taken from the NTFS change journal). The binary was rebuilt between the first run and the later ones (an unrelated fix in the driver's timer handling); the INF and the install location in the Driver Store are unchanged.

  • Oct 1, 13:08 - first run (earlier build), no copy present: both tests FAILED (hr = 0x7e)
  • Oct 2, 09:06 - virtualserial2.dll copied to system32\Drivers\UMDF\
  • Oct 2, 09:17 - both tests re-run (current build) with the copy present: PASSED ("Valid UMDF driver", version 2.31)
  • Oct 2, 09:19 - copy deleted
  • Oct 2, 10:24 - both tests re-run without the copy: FAILED again

Note: an HLKX package created after the last (failed) run contained only the logs of the passing run. Because that does not reflect the real installation, we do not intend to submit that package.

All other tests passed.

QUESTIONS

  1. Is this a known issue of the Function Table tests for UMDF 2 drivers that are installed to the Driver Store (DIRID 13)?
  2. Is there an official playlist filter or a documented exception for these two tests?
  3. If not: what is the supported way for a Windows 11 UMDF 2 driver to pass them? We do not want to ship a second copy of the binary in system32\Drivers\UMDF, because that would contradict the driver isolation requirements and would not be the file the driver host actually loads.

We can share the Te.wtl logs and the relevant INF sections if that helps.

Windows development | Windows Driver Kit (WDK)
0 comments No comments

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.