问题一:无法解析的外部符号 DriverEntry,函数 FxDriverEntryWorker 中引用了该符号
解决方法1、将源文件.cpp改为.c
解决方法2、在DriverEntry方法前加 extern "C"
问题二:如何给驱动签名
x86系统下安装驱动时,不校验签名;但x64系统要校验签名。
备注:下方可对exe和dll签名,但对sys签名后,安装驱动失败
//创建x.509证书,qsCA.pvk为密钥文件(保存私钥,创建时要输入密码,如123456),qsCA.cer为公钥(用刚才输入的密码123456给它做签名,相当如自签名)
C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64>makecert.exe -n "CN=qiaosong.beijing.cn" -r -sv qsCA.pvk qsCA.cer -b 01/07/2021 -e 01/01/2999
Succeeded
//公钥证书格式转换成SPC
C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64>cert2spc.exe qsca.cer qsCA.spc
Succeeded
//将公钥证书和私钥合并成一个PFX格式的证书文件,会弹出输入口令框
C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64>pvk2pfx.exe -pi 123456 -pvk qsCA.pvk -spc qsCA.spc -pfx qsRoot.pfx
//给exe文件做签名
C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x86>signtool.exe sign /fd SHA256 /f qsRoot.pfx /p "123456" D:\Cpath\studyDir\dllWorld\dll_declsec_client_pause_withSinger.exe
Done Adding Additional Store
Successfully signed: D:\Cpath\studyDir\dllWorld\dll_declsec_client_pause_withSinger.exe
// 加上时间戳
D:\Cpath\studyDir\数字签名\新建文件夹>signtool.exe sign /a /fd SHA256 /f ../qsRoot.pfx /p "123456" /td SHA256 /tr "http://timestamp.digicert.com" ../dll_declsec_client_pause_withSinger.exe
Done Adding Additional Store
Successfully signed: ../dll_declsec_client_pause_withSinger.exe