2
votes

I have packed device driver files .inf,.sys, and .cat into my installer, they are installed into windows\system32 folder and windows\system32\drivers folder, however, when I plug in my device and let windows search for drivers, no drivers can be found. the driver files are valid. any idea how to install device drivers for windows automatically? here's the inf file:

;/*++
;
;Abstract:
;    Installation inf for the Android USB Bulk device
;
;--*/

[Version]
Signature="$WINDOWS NT$"
Class=USB
ClassGuid={F72FE0D4-CBCB-407d-8814-9ED673D0DD6B}
Provider=%GOOG%
DriverVer=date,1.0.0009.00000
CatalogFile=androidusb.cat

; ================= Class section =====================

[ClassInstall32]
Addreg=AndroidUsbClassReg

[AndroidUsbClassReg]
HKR,,,0,%ClassName%
HKR,,Icon,,-5

[DestinationDirs]
DefaultDestDir = 12

; ================= Device section =====================

[Manufacturer]
%MfgName%=Google,NTx86

; For Win2K
[Google]
; For loopback testing
%USB\VID_18D1&PID_DDDD.DeviceDescTest%=androidusb.Dev, USB\VID_18D1&PID_DDDD
; Android Sooner
%USB\VID_18D1&PID_D00D.DeviceDescRelease%=androidusb.Dev, USB\VID_18D1&PID_D00D
%USB\VID_18D1&PID_DEED&MI_01.DeviceDescRelease%=androidusb.Dev, USB\VID_18D1&PID_DEED&MI_01
%USB\VID_18D1&PID_DEED&MI_02.DeviceDescRelease%=androidusb.Dev, USB\VID_18D1&PID_DEED&MI_02
; HTC Dream
%USB\VID_0BB4&PID_0C01.DeviceDescRelease%=androidusb.Dev, USB\VID_0BB4&PID_0C01
%USB\VID_0BB4&PID_0C02&MI_01.DeviceDescRelease%=androidusb.Dev, USB\VID_0BB4&PID_0C02&MI_01

; For XP and later
[Google.NTx86]
; For loopback testing
%USB\VID_18D1&PID_DDDD.DeviceDescTest%=androidusb.Dev, USB\VID_18D1&PID_DDDD
; Android Sooner
%USB\VID_18D1&PID_D00D.DeviceDescRelease%=androidusb.Dev, USB\VID_18D1&PID_D00D
%USB\VID_18D1&PID_DEED&MI_01.DeviceDescRelease%=androidusb.Dev, USB\VID_18D1&PID_DEED&MI_01
%USB\VID_18D1&PID_DEED&MI_02.DeviceDescRelease%=androidusb.Dev, USB\VID_18D1&PID_DEED&MI_02
; HTC Dream
%USB\VID_0BB4&PID_0C01.DeviceDescRelease%=androidusb.Dev, USB\VID_0BB4&PID_0C01
%USB\VID_0BB4&PID_0C02&MI_01.DeviceDescRelease%=androidusb.Dev, USB\VID_0BB4&PID_0C02&MI_01

[androidusb.Dev.NT]
CopyFiles=androidusb.Files.Ext

[androidusb.Dev.NT.Services]
Addservice = androidusb, 0x00000002, androidusb.AddService

[androidusb.AddService]
DisplayName    = %androidusb.SvcDesc%
ServiceType    = 1                  ; SERVICE_KERNEL_DRIVER
StartType      = 3                  ; SERVICE_DEMAND_START
ErrorControl   = 1                  ; SERVICE_ERROR_NORMAL
ServiceBinary  = %10%\System32\Drivers\androidusb.sys
AddReg         = androidusb.AddReg
LoadOrderGroup = Base

[androidusb.AddReg]
HKR,"Parameters","MaximumTransferSize",0x10001,4096
HKR,"Parameters","DebugLevel",0x10001,2
HKR, Parameters\Wdf, VerboseOn,       0x00010001, 1
HKR, Parameters\Wdf, VerifierOn,      0x00010001, 1
HKR, Parameters\Wdf, DbgBreakOnError, 0x00010001, 1

[androidusb.Files.Ext]
androidusb.sys

[SourceDisksNames]
1=%Disk_Description%,,,

[SourceDisksFiles]
androidusb.sys = 1

;-------------- WDF Coinstaller installation
[DestinationDirs]
CoInstaller_CopyFiles = 11

[androidusb.Dev.NT.CoInstallers]
AddReg=CoInstaller_AddReg
CopyFiles=CoInstaller_CopyFiles

[CoInstaller_CopyFiles]
wdfcoinstaller01005.dll

[SourceDisksFiles]
wdfcoinstaller01005.dll=1 ; make sure the number matches with SourceDisksNames

[CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "wdfcoinstaller01005.dll,WdfCoInstaller"

[androidusb.Dev.NT.Wdf]
KmdfService = androidusb, androidusb_wdfsect

[androidusb_wdfsect]
KmdfLibraryVersion = 1.5

;---------------------------------------------------------------;

[Strings]
GOOG            = "Google, Inc"
MfgName         = "Google, Inc"
Disk_Description= "ADB Interface Installation Disk"
androidusb.SvcDesc = "ADB Interface Driver"
ClassName       = "ADB Interface"
USB\VID_18D1&PID_DDDD.DeviceDescTest="Android Sooner ADB Testing Interface"
USB\VID_18D1&PID_D00D.DeviceDescRelease="Android Sooner Single ADB Interface"
USB\VID_18D1&PID_DEED&MI_01.DeviceDescRelease="Android Sooner Composite ADB Interface"
USB\VID_18D1&PID_DEED&MI_02.DeviceDescRelease="Android Sooner Kernel Debug Interface"
USB\VID_0BB4&PID_0C01.DeviceDescRelease="HTC Dream"
USB\VID_0BB4&PID_0C02&MI_01.DeviceDescRelease="HTC Dream Composite ADB Interface"
1
Did you put your inf-file to the windows\inf directory?Sergey Podobry
I copied inf file to windows\inf, now it's better, but it then tries to look for additional files from H driver(which is my usb device).user121196
Huh? You should never copy INF files to Windows\Inf yourself. You should have Windows copy them by calling the appropriate API. I suggest you google for DPInst and DIFxAPI.Ilya

1 Answers

3
votes

You have to install your driver by using the SetupAPI functions

To do a driver first install, you have to use SetupCopyOEMInf( ... ).

Your driver might not always be selected when installed in this way, because builtin drivers may be a better match.

A better match is always a WHQL signed driver, then signed drivers and then unsinged drivers.