1. 程式人生 > >通過右鍵安裝inf檔案來安裝驅動程式這種方式可取嗎?

通過右鍵安裝inf檔案來安裝驅動程式這種方式可取嗎?

    很多人拿到驅動包準備安裝驅動時,往往先想到通過滑鼠右鍵-安裝這種方式來安裝驅動。且不說能不能安裝成功,要支援這種安裝方式,對inf檔案有一定的要求:inf檔案中需要包含[DefaultInstall]這樣的節,這個節是右鍵安裝時的Inf入口點(MSDN的原話:"An INF file's DefaultInstall section is accessed if a user selects the "Install" menu item after right-clicking on the INF file name.")。很遺憾的是,很多驅動安裝包提供的Inf檔案中並沒有提供這樣的節,因此右鍵安裝並不能達到預期的效果("Providing a DefaultInstall section is optional. If an INF file does not include a DefaultInstall section, selecting "Install" after right-clicking on the file name causes an error message to be displayed."摘自MSDN)。

    於是,聰明的你會想:既然inf檔案中沒有這樣的節,我自己往檔案中插入這樣的節不就能達到目的了嗎?這種變通的思維當然是值得肯定的,但是,最終可能還是安裝失敗。不要質疑是不是自己哪寫的不對,再繼續修改inf檔案前,請看下MSDN上這段話:

"Remarks
DefaultInstall sections must not be used for device installations. Use DefaultInstall sections only for the installation of class filter drivers, class co-installers, 
file system filters, and kernel driver services that are not associated with a device node (devnode).
Note The INF file of a driver package must not contain an INF DefaultInstall section if the driver package is to be digitally signed. For more information about 
signing driver packages, see Driver Signing."

    這段話翻譯過來是說:DefaultInstall這種方式不適合裝置安裝(我們安裝驅動不就是為了裝置安裝嗎?),僅適用於安裝類過濾驅動/類協安裝器/檔案系統過濾驅動/以及核心驅動服務(即legendDriver,比如WinIO.sys)這些不涉及到裝置節點(devnode)的情況。說的再通俗一點:inf檔案中包含[Manufacturer]這樣的節(這個節包含了驅動匹配的裝置ID)就不應該再有[DefaultInstall]這樣的字眼。

--------------------------------------------------

後記:

    上面的內容不是很全面,只能說win7下右鍵安裝inf檔案的確不能成功,但到win10以後右鍵安裝發生了變化。事情起因是一個同事的安裝程式在win10下可以工作,但同樣的程式在win7下失效,裝置在裝置管理器中還帶著YB。以下分別是win7和win10的setupapi.dev.log

win7:

>>>  [Device Install (DiInstallDevice) - USB\VID_138A&PID_0010\8DC97459065E]
>>>  Section start 2016/11/16 13:36:20.634
      cmd: C:\Windows\system32\MsiExec.exe -Embedding CA2C5E8A03B6DFB686F86215EF748EA5 E Global\MSI0000
     dvi: {Plug and Play Service: Device Install for USB\VID_138A&PID_0010\8DC97459065E}
     ump:      Creating Install Process: DrvInst.exe 13:36:20.634
!    ndv:      Installing NULL driver!
     dvi:      Set selected driver complete.
     dvi:      {DIF_ALLOW_INSTALL} 13:36:20.634
     dvi:           No class installer for 'Synaptics FP Sensors (WBF) (PID=0010)'
     dvi:           Using exported function 'CoDeviceInstall' in module 'C:\Windows\system32\WudfCoinstaller.dll'.
     dvi:           CoInstaller 1 == WudfCoinstaller.dll
     dvi:           CoInstaller 1: Enter 13:36:20.649
     dvi:           CoInstaller 1: Exit
     dvi:           Default installer: Enter 13:36:20.649
     dvi:           Default installer: Exit
     dvi:      {DIF_ALLOW_INSTALL - exit(0xe000020e)} 13:36:20.649
     dvi:      {DIF_INSTALLDEVICE} 13:36:20.649
     dvi:           No class installer for 'Synaptics FP Sensors (WBF) (PID=0010)'
     dvi:           CoInstaller 1: Enter 13:36:20.649
     dvi:           CoInstaller 1: Exit
     dvi:           Default installer: Enter 13:36:20.649
!    dvi:                Installing NULL driver!
     dvi:                Writing common driver property settings.
!    dvi:                Failed to set Device Description property: (null)
!    dvi:                Error 1784: The supplied user buffer is not valid for the requested operation.
     dvi:                {Restarting Devices} 13:36:22.771
     dvi:                     Restart: USB\VID_138A&PID_0010\8DC97459065E
     dvi:                     Restart complete.
     dvi:                {Restarting Devices exit} 13:36:22.771
     dvi:           Default installer: Exit
     dvi:      {DIF_INSTALLDEVICE - exit(0x00000000)} 13:36:22.771
     dvi:      {DIF_DESTROYPRIVATEDATA} 13:36:22.786
     dvi:           CoInstaller 1: Enter 13:36:22.786
     dvi:           CoInstaller 1: Exit
     dvi:           Default installer: Enter 13:36:22.786
     dvi:           Default installer: Exit
     dvi:      {DIF_DESTROYPRIVATEDATA - exit(0xe000020e)} 13:36:22.786
     ump:      Server install process exited with code 0x00000000 13:36:22.786
     ump: {Plug and Play Service: Device Install exit(00000000)}
<<<  Section end 2016/11/16 13:36:22.786
<<<  [Exit status: SUCCESS]
win10:
>>>  [Device Install (DiInstallDriver) - C:\Users\a\Desktop\New folder\Driver\wbf_vfs_0010.inf]
>>>  Section start 2016/11/17 07:21:23.937
      cmd: "C:\WINDOWS\System32\InfDefaultInstall.exe" "C:\Users\a\Desktop\New folder\Driver\wbf_vfs_0010.inf"
     ndv: Flags: 0x00000000
     ndv: INF path: C:\Users\a\Desktop\New folder\Driver\wbf_vfs_0010.inf
~~0~~inf: {SetupCopyOEMInf: C:\Users\a\Desktop\New folder\Driver\wbf_vfs_0010.inf} 07:21:23.952
     inf:      Copy style: 0x00000000
     sto:      {Setup Import Driver Package: C:\Users\a\Desktop\New folder\Driver\wbf_vfs_0010.inf} 07:21:23.952
     inf:           Provider: Synaptics FP Sensors
     inf:           Class GUID: {53D29EF7-377C-4D14-864B-EB3A85769359}
     inf:           Driver Version: 06/03/2016,4.5.329.0
     inf:           Catalog File: wbf_vfs_0010.cat
     sto:           {Copy Driver Package: C:\Users\a\Desktop\New folder\Driver\wbf_vfs_0010.inf} 07:21:23.968
     sto:                Driver Package = C:\Users\a\Desktop\New folder\Driver\wbf_vfs_0010.inf
     sto:                Flags          = 0x00000007
     sto:                Destination    = C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}
     sto:                Copying driver package files to 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}'.
     flq:                Copying 'C:\Users\a\Desktop\New folder\Driver\X64\vcsWBFEngineAdapter.dll' to 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\vcsWBFEngineAdapter.dll'.
     flq:                Copying 'C:\Users\a\Desktop\New folder\Driver\X64\wbf_vfs_0010.dll' to 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\wbf_vfs_0010.dll'.
     flq:                Copying 'C:\Users\a\Desktop\New folder\Driver\X64\valWBFPolicyService.exe' to 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\valWBFPolicyService.exe'.
     flq:                Copying 'C:\Users\a\Desktop\New folder\Driver\X64\vcsWBFStorageAdapter.dll' to 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\vcsWBFStorageAdapter.dll'.
     flq:                Copying 'C:\Users\a\Desktop\New folder\Driver\X64\ValEFIResDll.dll' to 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\ValEFIResDll.dll'.
     flq:                Copying 'C:\Users\a\Desktop\New folder\Driver\X64\vcsAPIFORWBF.dll' to 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\vcsAPIFORWBF.dll'.
     flq:                Copying 'C:\Users\a\Desktop\New folder\Driver\wbf_vfs_0010.cat' to 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\wbf_vfs_0010.cat'.
     flq:                Copying 'C:\Users\a\Desktop\New folder\Driver\wbf_vfs_0010.inf' to 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\wbf_vfs_0010.inf'.
     sto:           {Copy Driver Package: exit(0x00000000)} 07:21:24.015
     pol:           {Driver package policy check} 07:21:24.031
     pol:           {Driver package policy check - exit(0x00000000)} 07:21:24.031
     sto:           {Stage Driver Package: C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\wbf_vfs_0010.inf} 07:21:24.031
     inf:                {Query Configurability: C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\wbf_vfs_0010.inf} 07:21:24.031
!    inf:                     Found legacy AddReg operation using non-relative key (HKLM\SOFTWARE\Validity). Code = 1305
!    inf:                     Driver package 'wbf_vfs_0010.inf' is NOT configurable.
     inf:                {Query Configurability: exit(0x00000000)} 07:21:24.031
     flq:                Copying 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\vcsWBFEngineAdapter.dll' to 'C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\X64\vcsWBFEngineAdapter.dll'.
     flq:                Copying 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\wbf_vfs_0010.dll' to 'C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\X64\wbf_vfs_0010.dll'.
     flq:                Copying 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\valWBFPolicyService.exe' to 'C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\X64\valWBFPolicyService.exe'.
     flq:                Copying 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\vcsWBFStorageAdapter.dll' to 'C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\X64\vcsWBFStorageAdapter.dll'.
     flq:                Copying 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\ValEFIResDll.dll' to 'C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\X64\ValEFIResDll.dll'.
     flq:                Copying 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\X64\vcsAPIFORWBF.dll' to 'C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\X64\vcsAPIFORWBF.dll'.
     flq:                Copying 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\wbf_vfs_0010.cat' to 'C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\wbf_vfs_0010.cat'.
     flq:                Copying 'C:\Users\a\AppData\Local\Temp\{d258c716-670e-f345-92c1-d29368915dc2}\wbf_vfs_0010.inf' to 'C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\wbf_vfs_0010.inf'.
     sto:                {DRIVERSTORE IMPORT VALIDATE} 07:21:24.109
     sig:                     {_VERIFY_FILE_SIGNATURE} 07:21:24.124
     sig:                          Key      = wbf_vfs_0010.inf
     sig:                          FilePath = C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\wbf_vfs_0010.inf
     sig:                          Catalog  = C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\wbf_vfs_0010.cat
     sig:                          Success: File is signed in catalog.
     sig:                     {_VERIFY_FILE_SIGNATURE exit(0x00000000)} 07:21:24.124
     sto:                {DRIVERSTORE IMPORT VALIDATE: exit(0x00000000)} 07:21:24.187
     sig:                Signer Score = 0x0D000005
     sig:                Signer Name  = Microsoft Windows Hardware Compatibility Publisher
     sto:                {DRIVERSTORE IMPORT BEGIN} 07:21:24.187
     sto:                {DRIVERSTORE IMPORT BEGIN: exit(0x00000000)} 07:21:24.187
     cpy:                {Copy Directory: C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}} 07:21:24.187
     cpy:                     Target Path = C:\WINDOWS\System32\DriverStore\FileRepository\wbf_vfs_0010.inf_amd64_a3cce991cb6184f8
     cpy:                     {Copy Directory: C:\WINDOWS\System32\DriverStore\Temp\{b3be54f1-7543-1a48-9ef9-03d288da77a4}\X64} 07:21:24.187
     cpy:                          Target Path = C:\WINDOWS\System32\DriverStore\FileRepository\wbf_vfs_0010.inf_amd64_a3cce991cb6184f8\X64
     cpy:                     {Copy Directory: exit(0x00000000)} 07:21:24.187
     cpy:                {Copy Directory: exit(0x00000000)} 07:21:24.187
     idb:                {Register Driver Package: C:\WINDOWS\System32\DriverStore\FileRepository\wbf_vfs_0010.inf_amd64_a3cce991cb6184f8\wbf_vfs_0010.inf} 07:21:24.187
     idb:                     Created driver package object 'wbf_vfs_0010.inf_amd64_a3cce991cb6184f8' in DRIVERS database node.
     idb:                     Created driver INF file object 'wbf_vfs_0010.inf' in DRIVERS database node.
     idb:                     Registered driver package 'wbf_vfs_0010.inf_amd64_a3cce991cb6184f8' with 'wbf_vfs_0010.inf'.
     idb:                {Register Driver Package: exit(0x00000000)} 07:21:24.187
     idb:                {Publish Driver Package: C:\WINDOWS\System32\DriverStore\FileRepository\wbf_vfs_0010.inf_amd64_a3cce991cb6184f8\wbf_vfs_0010.inf} 07:21:24.187
     idb:                     Activating driver package 'wbf_vfs_0010.inf_amd64_a3cce991cb6184f8'.
     cpy:                     Published 'wbf_vfs_0010.inf_amd64_a3cce991cb6184f8\wbf_vfs_0010.inf' to 'wbf_vfs_0010.inf'.
     idb:                     Indexed 2 device IDs for 'wbf_vfs_0010.inf_amd64_a3cce991cb6184f8'.
     sto:                     Flushed driver database node 'DRIVERS'. Time = 47 ms
     sto:                     Flushed driver database node 'SYSTEM'. Time = 31 ms
     idb:                {Publish Driver Package: exit(0x00000000)} 07:21:24.281
     sto:                {DRIVERSTORE IMPORT END} 07:21:24.281
     dvi:                     Flushed all driver package files to disk. Time = 141 ms
     sig:                     Installed catalog 'wbf_vfs_0010.cat' as 'wbf_vfs_0010.cat'.
     sto:                {DRIVERSTORE IMPORT END: exit(0x00000000)} 07:21:24.447
     sto:           {Stage Driver Package: exit(0x00000000)} 07:21:24.463
     sto:      {Setup Import Driver Package - exit (0x00000000)} 07:21:24.494
~~1~~inf:      Driver Store Path: C:\WINDOWS\System32\DriverStore\FileRepository\wbf_vfs_0010.inf_amd64_a3cce991cb6184f8\wbf_vfs_0010.inf
     inf:      Published Inf Path: C:\WINDOWS\INF\wbf_vfs_0010.inf
~~2~~inf: {SetupCopyOEMInf exit (0x00000000)} 07:21:24.510
~~3~~ndv: {Update Device Driver - USB\VID_138A&PID_0010\5489D2BC33CE}
     ndv:      Search options: 0x00000081
     ndv:      Searching single INF 'C:\Users\a\Desktop\New folder\Driver\wbf_vfs_0010.inf'
     dvi:      {Build Driver List} 07:21:24.525
     dvi:           Searching for hardware ID(s):
     dvi:                usb\vid_138a&pid_0010&rev_0078
     dvi:                usb\vid_138a&pid_0010
     dvi:           Searching for compatible ID(s):
     dvi:                usb\class_ff&subclass_00&prot_00
     dvi:                usb\class_ff&subclass_00
     dvi:                usb\class_ff
     dvi:           Created Driver Node:
     dvi:                HardwareID   - USB\VID_138A&PID_0010
     dvi:                InfName      - c:\users\a\desktop\new folder\driver\wbf_vfs_0010.inf
     dvi:                DevDesc      - Synaptics FP Sensors (WBF) (PID=0010)
     dvi:                Section      - Biometric_Install.NT
     dvi:                Rank         - 0x00c00001
     dvi:                Signer Score - WHQL
     dvi:                DrvDate      - 06/03/2016
     dvi:                Version      - 4.5.329.0
     dvi:      {Build Driver List - exit(0x00000000)} 07:21:24.556
     ndv:      Searching currently installed INF
     dvi:      {Build Driver List} 07:21:24.572
     dvi:           Searching for hardware ID(s):
     dvi:                usb\vid_138a&pid_0010&rev_0078
     dvi:                usb\vid_138a&pid_0010
     dvi:           Searching for compatible ID(s):
     dvi:                usb\class_ff&subclass_00&prot_00
     dvi:                usb\class_ff&subclass_00
     dvi:                usb\class_ff
     dvi:      {Build Driver List - exit(0x00000000)} 07:21:24.588
     dvi:      {DIF_SELECTBESTCOMPATDRV} 07:21:24.588
     dvi:           Default installer: Enter 07:21:24.588
     dvi:                {Select Best Driver}
     dvi:                     Class GUID of device changed to: {53d29ef7-377c-4d14-864b-eb3a85769359}.
     dvi:                     Selected:
     dvi:                          Description - [Synaptics FP Sensors (WBF) (PID=0010)]
     dvi:                          InfFile     - [c:\users\a\desktop\new folder\driver\wbf_vfs_0010.inf]
     dvi:                          Section     - [Biometric_Install]
     dvi:                {Select Best Driver - exit(0x00000000)}
     dvi:           Default installer: Exit
     dvi:      {DIF_SELECTBESTCOMPATDRV - exit(0x00000000)} 07:21:24.603
     ndv:      Installing driver:
     ndv:           Inf Name       - wbf_vfs_0010.inf
     ndv:           Driver Date    - 06/03/2016
     ndv:           Driver Version - 4.5.329.0
~~4~~ndv:      Driver package 'C:\WINDOWS\System32\DriverStore\FileRepository\wbf_vfs_0010.inf_amd64_a3cce991cb6184f8\wbf_vfs_0010.inf' is already imported.
     sto:      {Setup Import Driver Package: c:\users\a\desktop\new folder\driver\wbf_vfs_0010.inf} 07:21:24.619
     sto:           Driver package already imported as 'wbf_vfs_0010.inf'.
     sto:      {Setup Import Driver Package - exit (0x00000000)} 07:21:24.635
     dvi:      Searching for hardware ID(s):
     dvi:           usb\vid_138a&pid_0010&rev_0078
     dvi:           usb\vid_138a&pid_0010
     dvi:      Searching for compatible ID(s):
     dvi:           usb\class_ff&subclass_00&prot_00
     dvi:           usb\class_ff&subclass_00
     dvi:           usb\class_ff
     dvi:      Class GUID of device changed to: {53d29ef7-377c-4d14-864b-eb3a85769359}.
     dvi:      {Plug and Play Service: Device Install for USB\VID_138A&PID_0010\5489D2BC33CE}
     dvi:           Driver INF Path: C:\WINDOWS\INF\wbf_vfs_0010.inf
     dvi:           Driver Node Name: wbf_vfs_0010.inf:b8956f6d4f120cff:Biometric_Install:4.5.329.0:usb\vid_138a&pid_0010
     dvi:           Driver Store Path: C:\WINDOWS\System32\DriverStore\FileRepository\wbf_vfs_0010.inf_amd64_a3cce991cb6184f8\wbf_vfs_0010.inf
     dvi:           Searching for hardware ID(s):
     dvi:                usb\vid_138a&pid_0010&rev_0078
     dvi:                usb\vid_138a&pid_0010
     dvi:           Searching for compatible ID(s):
     dvi:                usb\class_ff&subclass_00&prot_00
     dvi:                usb\class_ff&subclass_00
     dvi:                usb\class_ff
     dvi:           Class GUID of device changed to: {53d29ef7-377c-4d14-864b-eb3a85769359}.
     dvi:           {Core Device Install} 07:21:24.662
     dvi:                {Install Device - USB\VID_138A&PID_0010\5489D2BC33CE} 07:21:24.662
     dvi:                     Parent device: USB\ROOT_HUB30\4&39111547&0&0
     dvi:                     {Configure Device - USB\VID_138A&PID_0010\5489D2BC33CE} 07:21:24.662
     dvi:                          Parent device: USB\ROOT_HUB30\4&39111547&0&0
     dvi:                     {Configure Device - exit(0x00000032)} 07:21:24.662
     dvi:                     {DIF_ALLOW_INSTALL} 07:21:24.662
     dvi:                          Using exported function 'CoDeviceInstall' in module 'C:\WINDOWS\system32\WUDFCoinstaller.dll'.
     dvi:                          CoInstaller 1 == WUDFCoinstaller.dll
     dvi:                          CoInstaller 1: Enter 07:21:24.677
     dvi:                          CoInstaller 1: Exit
     dvi:                          Default installer: Enter 07:21:24.677
     dvi:                          Default installer: Exit
     dvi:                     {DIF_ALLOW_INSTALL - exit(0xe000020e)} 07:21:24.677
     dvi:                     {DIF_INSTALLDEVICEFILES} 07:21:24.677
     dvi:                          CoInstaller 1: Enter 07:21:24.677
     dvi:                          CoInstaller 1: Exit
     dvi:                          Default installer: Enter 07:21:24.677
     dvi:                          Default installer: Exit
     dvi:                     {DIF_INSTALLDEVICEFILES - exit(0x00000000)} 07:21:24.677
     flq:                     File 'C:\WINDOWS\system32\DRIVERS\UMDF\wbf_vfs_0010.dll' pruned from copy.
     flq:                     File 'C:\WINDOWS\system32\vcsAPIFORWBF.dll' pruned from copy.
     flq:                     File 'C:\WINDOWS\system32\valWBFPolicyService.exe' pruned from copy.
     flq:                     File 'C:\WINDOWS\system32\ValEFIResDll.dll' pruned from copy.
     flq:                     File 'C:\WINDOWS\system32\WinBioPlugIns\vcsWBFEngineAdapter.dll' pruned from copy.
     flq:                     File 'C:\WINDOWS\system32\WinBioPlugIns\vcsWBFStorageAdapter.dll' pruned from copy.
     flq:                     File 'C:\WINDOWS\system32\DRIVERS\winusb.sys' pruned from copy.
     dvi:                     {DIF_REGISTER_COINSTALLERS} 07:21:24.759
     dvi:                          Reset Device: Resetting device configuration. 07:21:24.759
     dvi:                          Reset Device: Resetting device configuration completed. 07:21:24.759
     dvi:                          CoInstaller 1: Enter 07:21:24.759
     dvi:                          CoInstaller 1: Exit
     dvi:                          Default installer: Enter 07:21:24.759
     dvi:                               {DIF_DESTROYPRIVATEDATA} 07:21:24.759
     dvi:                                    CoInstaller 1: Enter 07:21:24.759
     dvi:                                    CoInstaller 1: Exit
     dvi:                                    Default installer: Enter 07:21:24.759
     dvi:                                    Default installer: Exit
     dvi:                               {DIF_DESTROYPRIVATEDATA - exit(0xe000020e)} 07:21:24.759
     dvi:                          Default installer: Exit
     dvi:                     {DIF_REGISTER_COINSTALLERS - exit(0x00000000)} 07:21:24.759
     dvi:                     {DIF_INSTALLINTERFACES} 07:21:24.759
     dvi:                          Using exported function 'CoDeviceInstall' in module 'C:\WINDOWS\system32\WudfCoinstaller.dll'.
     dvi:                          CoInstaller 1 == WudfCoinstaller.dll
     dvi:                          CoInstaller 1: Enter 07:21:24.759
     dvi:                          CoInstaller 1: Exit
     dvi:                          Default installer: Enter 07:21:24.759
     dvi:                          Default installer: Exit
     dvi:                     {DIF_INSTALLINTERFACES - exit(0x00000000)} 07:21:24.759
     dvi:                     {DIF_INSTALLDEVICE} 07:21:24.775
     dvi:                          CoInstaller 1: Enter 07:21:24.775
     dvi:                          CoInstaller 1: Exit
     dvi:                          Default installer: Enter 07:21:24.988
     dvi:                               {Install DEVICE}
     dvi:                                    {Writing Device Properties}
     dvi:                                         Strong Name=wbf_vfs_0010.inf:b8956f6d4f120cff:Biometric_Install:4.5.329.0:usb\vid_138a&pid_0010
     dvi:                                    {Writing Device Properties - Complete}
     inf:                                    AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall  (wbf_vfs_0010.inf line 71)
     dvi:                                    Add Service: Modified existing service 'WUDFRd'.
     inf:                                    AddService=WinUsb,0x000001f8,WinUsb_ServiceInstall  (wbf_vfs_0010.inf line 72)
     dvi:                                    Add Service: Modified existing service 'WinUsb'.
     inf:                                    AddService=valWBFPolicyService,0x000009f8,WBFPolicy_ServiceInstall  (wbf_vfs_0010.inf line 73)
     dvi:                                    Add Service: Modified existing service 'valWBFPolicyService'.
     dvi:                                    Start Service: Successfully restarted service 'valWBFPolicyService'.
     dvi:                               {Install DEVICE exit (0x00000000)}
     dvi:                               Install Device: Configuring device class. 07:21:25.582
     dvi:                               Install Device: Configuring device class completed. 07:21:25.582
     dvi:                               Install Device: Starting device. 07:21:25.582
     dvi:                               Install Device: Starting device completed. 07:21:26.058
     dvi:                          Default installer: Exit
     dvi:                          CoInstaller 1: Enter (Post Processing) 07:21:26.058
     dvi:                          CoInstaller 1: Exit (Post Processing)
     dvi:                     {DIF_INSTALLDEVICE - exit(0x00000000)} 07:21:26.120
     dvi:                     {DIF_NEWDEVICEWIZARD_FINISHINSTALL} 07:21:26.120
     dvi:                          CoInstaller 1: Enter 07:21:26.120
     dvi:                          CoInstaller 1: Exit
     dvi:                          Default installer: Enter 07:21:26.120
     dvi:                          Default installer: Exit
     dvi:                     {DIF_NEWDEVICEWIZARD_FINISHINSTALL - exit(0xe000020e)} 07:21:26.120
     dvi:                {Install Device - exit(0x00000000)} 07:21:26.136
     dvi:           {Core Device Install - exit(0x00000000)} 07:21:26.136
     dvi:           {DIF_DESTROYPRIVATEDATA} 07:21:26.136
     dvi:                CoInstaller 1: Enter 07:21:26.136
     dvi:                CoInstaller 1: Exit
     dvi:                Default installer: Enter 07:21:26.151
     dvi:                Default installer: Exit
     dvi:           {DIF_DESTROYPRIVATEDATA - exit(0xe000020e)} 07:21:26.151
     ump:      {Plug and Play Service: Device Install exit(00000000)}
     ndv: {Update Device Driver - exit(00000000)}
<<<  Section end 2016/11/17 07:21:26.167
<<<  [Exit status: SUCCESS]

    直觀感受就是win10的安裝日誌內容遠比win7豐富,並且有很多copyfile的動作。這不免會聯想到難不成inf檔案工作了?帶著這種懷疑,我仔細查看了win10的setupapi.dev.log。在~~0~~處,右鍵安裝時呼叫了SetupCopyOEMInf函式。這個函式怎麼感覺有點眼熟?winddk 7600下devcon add_dp命令的實現就是呼叫了這個函式。呼叫這個函式的結果就是將驅動包安裝在DriverStore下:

再看setupapi.dev.log ~~3~~處,在呼叫SetupCopyOEMInf函式完成後,系統緊接著做了一次[Update Device Driver]操作-----這相當於在裝置管理器裡做了一次更新裝置驅動的操作。這使得裝置管理器中YB的裝置在DriverStore中匹配相應的裝置驅動,正因為win10的這些變化導致了同事的安裝程式在win7下工作失敗。