Xmake will detect WDK automatically and we can also set the WDK directory manually.
$ xmake f --wdk="G:\Program Files\Windows Kits\10" -c
$ xmake
If you want to known more information, you can see #159.
And see WDK examples
We can run the following command to generate a .cab driver package.
$ xmake [p|package]
$ xmake [p|package] -o outputdir
The output files like:
- drivers
- sampledsm
- debug/x86/sampledsm.cab
- release/x64/sampledsm.cab
- debug/x86/sampledsm.cab
- release/x64/sampledsm.cab
The driver signing is disabled when we compile driver in default case,
but we can add set_values("wdk.sign.mode") to enable test/release sign.
We can use test certificate of xmake to do testsign, but please run $xmake l utils.wdk.testcert install as admin to install a test certificate first (only once)!
target("msdsm")
add_rules("wdk.driver", "wdk.env.wdm")
set_values("wdk.sign.mode", "test")
set_values("wdk.sign.digest_algorithm", "sha256")
Or we set a valid certificate thumbprint to do it in local machine.
target("msdsm")
add_rules("wdk.driver", "wdk.env.wdm")
set_values("wdk.sign.mode", "test")
set_values("wdk.sign.thumbprint", "032122545DCAA6167B1ADBE5F7FDF07AE2234AAA")
set_values("wdk.sign.digest_algorithm", "sha256")
We can also do testsign via setting store/company info.
target("msdsm")
add_rules("wdk.driver", "wdk.env.wdm")
set_values("wdk.sign.mode", "test")
set_values("wdk.sign.store", "PrivateCertStore")
set_values("wdk.sign.company", "tboox.org(test)")
set_values("wdk.sign.digest_algorithm", "sha256")
We can set a certificate file for release signing.
target("msdsm")
add_rules("wdk.driver", "wdk.env.wdm")
set_values("wdk.sign.mode", "release")
set_values("wdk.sign.company", "xxxx")
set_values("wdk.sign.certfile", path.join(os.projectdir(), "xxxx.cer"))
set_values("wdk.sign.digest_algorithm", "sha256")
We can set wdk.env.winver to generate a driver package that is compatible with a low version system.
set_values("wdk.env.winver", "win10")
set_values("wdk.env.winver", "win10_rs3")
set_values("wdk.env.winver", "win81")
set_values("wdk.env.winver", "win8")
set_values("wdk.env.winver", "win7")
set_values("wdk.env.winver", "win7_sp1")
set_values("wdk.env.winver", "win7_sp2")
set_values("wdk.env.winver", "win7_sp3")
We can also set windows version for WDK driver program:
$ xmake f --wdk_winver=[win10_rs3|win8|win7|win7_sp1]
$ xmake