Driver does not work on some versions of windows 10

Hi all,

My audio driver use Attestation signing for public release. On submit hardware page for driver signing, I checked all version of windows 10 (excluded some ARM64 version)
It works well on latest version of windows (20H2, 20H1)
I had a report that my driver cannot install on windows 10 version 1909.
I setup 2 clean virtual machine run on windows OS (version 1909 and 20H2). All two versions are not in “list windows 10 version” on submit hardware page. I tried to install my driver on this 2 VM.
On 20H2 VM success. On 1909 VM failed.
Log in setupapi.log “Device class {4d36e978-e325-11ce-bfc1-08002be10318} is not configurable.
Device status on device manager:”

Windows cannot load the device driver for this hardware. The driver may be corrupted or missing. (Code 39)
{Driver Entry Point Not Found}
The %hs device driver could not locate the entry point %hs in driver %hs.
Hope everybody help please

This absolutely does not look like a signing issue to me. Wrong version of the driver, maybe (32-bit via 64-bit… arm vs Intel?)

I’m having trouble believing it’s actually an OS version issue and not something else, just coincidentally showing up on a different OS version.

Peter

Both of my VM are x64 intel OS.
I tried to build, sign, and install some another sample code, but I got same problems on 1909 OS.

Some more info:
CA: EV code signing from digicert
Digest algorithm: SHA256
List version of Requested Signatures

Windows 10 Client versions 1506 and 1511 (TH2)
Windows 10 Client versions 1506 and 1511 x64 (TH2)
Windows 10 Client version 1607 (RS1)
Windows 10 Client version 1607 x64 (RS1)
Windows 10 Client version 1703 Client (RS2)
Windows 10 Client version 1703 Client x64 (RS2)
Windows 10 Client version 1709 Client (RS3)
Windows 10 Client version 1709 Client x64 (RS3)
Windows 10 Client version 1803 Client (RS4)
Windows 10 Client version 1803 Client x64 (RS4)
Windows 10 Client version 1809 Client (RS5)
Windows 10 Client version 1809 Client x64 (RS5)
Windows 10 19H1 Client
Windows 10 19H1 Client x64
Windows 10 Client version 2004 (Vb)
Windows 10 Client version 2004 x64 (Vb)
Windows - Client, version 21H2 x64 (Co)

Post the contents of setupi.dev.log so we can look at it, please.

Peter

I uploaded setupapi.dev.log here
https://drive.google.com/file/d/1v-IWukpoIDZjs7Np0yifSiKI2MiYTeSK/view?usp=sharing

Thanks

C0000263 is STATUS_DRIVER_ENTRYPOINT_NOT_FOUND. I expect that means you’ve loaded a driver on an operating system older than the one you built it for. You always need to build your driver for the oldest operating system you expect to support. Are you doing that?

@Tim_Roberts said:
C0000263 is STATUS_DRIVER_ENTRYPOINT_NOT_FOUND. I expect that means you’ve loaded a driver on an operating system older than the one you built it for. You always need to build your driver for the oldest operating system you expect to support. Are you doing that?

I build and test only on windows 10 x64 intel.
kdmf version 1.15.
I dont know where else to define windows 10 version that my driver support

Yes, when I said it I knew that wasn’t the issue. It wouldn’t explain “works on 1809, fails on 1909, works on 2004”. I wonder if there was some API that converted from macro to function? Of course, if it were, others would already have jumped in.

A missing import would result in a failed image load, not STATUS_DRIVER_ENTRYPOINT_NOT_FOUND (unless the error path has changed since last i stepped through the MmLoadSystemImage code). You can dump the image’s imports (link /dump /imports) and then verify it against ntoskrnl’s exports (link /dump /exports). Are you linking against other libraries outside of wdfldr (if it is a KMDF driver) ?

My driver base on simpleaudiosample. I didnt change it much.
Even the base project has the same problem.

I tried to change NT_TARGET_VERSION to specify version of windows to build.
My project can build only on the latest version (Windows 10.0.19041). The older version (example Windows 10.0.18362 aka version 1903, 1909) has failed to build.
Some build error such as

Error C2061 syntax error: identifier ‘POOL_FLAGS’
Error C3861 ‘ExAllocatePool2’: identifier not found
I think that’s the reason my driver can’t install on windows version 1909 or older.

removed

Ah … yep, that’s a known issue, MS updated the memory allocation stuff [https://github.com/MicrosoftDocs/windows-driver-docs/blob/staging/windows-driver-docs-pr/kernel/updating-deprecated-exallocatepool-calls.md] and the new AudioSample uses those …

To get it to work on earlier version of Windows, you can change all of the ExAllocatePool2 calls back to ExAllocatePoolWithTag (you will need to change the POOL_FLAGS back into the appropriate PagedX flags) and should be OK … the memory is released with the same ExFreePoolWithTag function and internally all that Allocate2 is doing is an extra zero memory (as the doc shows) …

Give that a spin …

1 Like

@craig_howard said:
Ah … yep, that’s a known issue, MS updated the memory allocation stuff [https://github.com/MicrosoftDocs/windows-driver-docs/blob/staging/windows-driver-docs-pr/kernel/updating-deprecated-exallocatepool-calls.md] and the new AudioSample uses those …

To get it to work on earlier version of Windows, you can change all of the ExAllocatePool2 calls back to ExAllocatePoolWithTag (you will need to change the POOL_FLAGS back into the appropriate PagedX flags) and should be OK … the memory is released with the same ExFreePoolWithTag function and internally all that Allocate2 is doing is an extra zero memory (as the doc shows) …

Give that a spin …

It’s work for me.
Thanks you very much :smile: