第一篇文章,不知道怎么开始,但是很想把现在知道的点点记下来,以后做其他东西了,或许这些再也想不起来了。
具体过程如下:
当时我们拿到别的公司开发好的INF还有SYS文件,但是我们要修改INF实现我们自己需求(也就是设备显示的名称),我们会首先通过SetupCopyOEMInf()函数预安装驱动,一开始改过之后每次插入设备,电脑都会弹出发现新硬件向导,通过多次和发INF文件的工程师沟通,得到个关键子Test-signing,Google一下
找到如下信息:
http://msdn.microsoft.com/en-us/windows/hardware/gg487328 |
结合selfsign_example.bat----------------这个文件如果你安装过WINDDK 会在src\general\build\driversigning目录下找到,其过程一目了然。
自己总结了下:
1.通过MakeCert.exe 得到一个证书文件,其名称可以在MakeCert.exe 的参数中设置 假设为:Test.cer
Makecert -r -pe -ss PrivateCertStore -n "CN=Usb(WHMTest)" TestCert.cer
2.调用Inf2Cat.exe 将你修改的的inf 转换为.Cat文件。传入的参数可以是.inf所在的文件夹,该exe会把文件下的所有inf的转换为cat(当然你inf里所使用的sys文件也要在相对的路径下)
inf2cat.exe /driver:32inf /os:XP_X86,7_X86 (后面参数表示xp,和win732系统的签名)
3.调用signtool.exe 将2步产生的.cat文件签名
SignTool sign /s PrivateCertStore 32inf\*.cat(此*.cat 文件会在第三步产生)
SignTool sign /s PrivateCertStore 32inf\*.cat
SignTool sign /s PrivateCertStore 32inf\*.cat
4.将1产生的证书文件安装到系统
certmgr.exe -add -c "Test.cer" -s -r localMachine root
certmgr.exe -add -c "Test.cer" -s -r localMachine trustedpublisher
第4步过程结束之后,在次调用SetupCopyOEMInf()函数,插入设备,驱动就好完成自动安装。
以上也是驱动安装包制作的核心过程。
PS:以上exe都可以在WINDDK的安装目录下找到,不明白的在看看这个文件把,selfsign_example.bat。该文件我已上传。(另外还包含Certmgr.exe,KMCS_Walkthrough.doc (微软文档))。
话说这位大神早就写过类似的东西http://blog.sina.com.cn/s/blog_4b650d650100p7bt.html,枉我把他所要的博文都看了一遍,当时竟然没注意。