Driver installation issues

I have created a driver that appears to be installing fine on various
systems and on quite a few WinXP x86 systems as well as 2 or 3 Vista x86
laptops. WinXP x86, WinXP x64, Vista x86, Windows7 x64 are what I’ve tested
so far.

On one Vista laptop, I am repeatedly getting an error log that looks like
below. Oddly, the device comes up disabled, which I have never seen.
Enabling it does no good and manually selecting the INF file fails. I have
tried clearing out the driver completely to the best of my ability: delete
all related infs in c:\windows\inf, removed all driver installed files in
sys32 and sys32\drivers, removed the service from the registry. Still no
luck. I tried renaming the service to “ECIUSB2” in the INF, and it says the
same thing.

Oddly, when I go back to the old inf I used from before, it works. Since I
changed my new inf drastically to support x64, I will post it here. I’ve
checked everything to the best of my ability. Could anybody with more
experience review this? I am relatively new to this, so it may be something
obvious in my INF that will stand out to an expert.

dvi: Strong
Name=oem43.inf:EControls.NTx86:ECIUSB.Dev:3.1.0.2:usb\vid_084f&pid_c050
dvi: {Writing Device Properties - Complete}
inf: {Install Inf Section
[ECIUSB.Dev.NTx86.Services]}
inf:
Addservice=ECIUSB,0x00000002,ECIUSB.AddService (eciusb.inf line 66)
inf: ServiceType=1 (eciusb.inf line 73)
inf: StartType=3 (eciusb.inf line 74)
inf: ErrorControl=1 (eciusb.inf line 75)
inf:
ServiceBinary=C:\Windows\system32\DRIVERS\eciusb.sys (eciusb.inf line 76)
inf: DisplayName=“ECOM Communications Device”
(eciusb.inf line 72)
inf: LoadOrderGroup=Base (eciusb.inf line 78)
!!! dvi: Add Service: Failed to create service
‘ECIUSB’.
!!! dvi: Error 1078: The name is already in use as
either a service name or a service display name.
!!! inf: {Install Inf Section
[ECIUSB.Dev.NTx86.Services] exit(0x00000436)}
!!! inf: Error 1078: The name is already in use as
either a service name or a service display name.
!!! dvi: Error while installing services.
!!! dvi: Error 1078: The name is already in use as
either a service name or a service display name.
!!! dvi: Cleaning up failed installation
!!! dvi: Error 1078: The name is already in use as
either a service name or a service display name.
dvi: {Install DEVICE exit (0x00000436)}
!!! dvi: Cleaning up failed installation (00000436)
!!! dvi: Default installer: failed!
!!! dvi: Error 1078: The name is already in use as either a
service name or a service display name.
dvi: CoInstaller 1: Enter (Post Processing) 16:19:10.760
! dvi: CoInstaller 1: modified status 0x00000000! (Post
Processing)
! dvi: Error 0: The operation completed successfully.
dvi: {DIF_INSTALLDEVICE - exit(0x00000000)} 16:19:11.789
dvi: {Build Driver List} 16:19:11.789
! dvi: Driver list already built
dvi: {Build Driver List - exit(0x00000000)} 16:19:11.789
dvi: {DIF_SELECTBESTCOMPATDRV} 16:19:11.789
dvi: CoInstaller 1: Enter 16:19:11.789
dvi: CoInstaller 1: Exit
dvi: Class installer: Enter 16:19:11.789
dvi: {Build Driver List} 16:19:11.789
! dvi: Driver list already built
dvi: {Build Driver List - exit(0x00000000)} 16:19:11.789
dvi: Selected driver installs from section [ECIUSB.Dev]
in
‘c:\windows\system32\driverstore\filerepository\eciusb.inf_a19c157b\eciusb.i
nf’.
dvi: Class GUID of device remains:
{526b6511-d605-4ded-ada1-b205fba4ffff}.
dvi: Set selected driver complete.
dvi: Class installer: Exit
dvi: {DIF_SELECTBESTCOMPATDRV - exit(0x00000000)} 16:19:11.789
dvi: {DIF_NEWDEVICEWIZARD_FINISHINSTALL} 16:19:11.789
dvi: CoInstaller 1: Enter 16:19:11.789
dvi: CoInstaller 1: Exit
dvi: Class installer: Enter 16:19:11.805
dvi: Class installer: Exit
dvi: Default installer: Enter 16:19:11.805
dvi: Default installer: Exit
dvi: {DIF_NEWDEVICEWIZARD_FINISHINSTALL - exit(0xe000020e)}
16:19:11.805
ndv: Device install status=0x00000000
ndv: Performing device install final cleanup…
! ndv: Queueing up error report since device has a PnP problem…
ndv: {Core Device Install - exit(0x00000000)}
dvi: {DIF_DESTROYPRIVATEDATA} 16:19:13.677
dvi: CoInstaller 1: Enter 16:19:13.677
dvi: CoInstaller 1: Exit
dvi: Class installer: Enter 16:19:13.677
dvi: Class installer: Exit
dvi: Default installer: Enter 16:19:13.677
dvi: Default installer: Exit
dvi: {DIF_DESTROYPRIVATEDATA - exit(0xe000020e)} 16:19:13.677
ump: Server install process exited with code 0x00000000 16:19:13.692
<<< Section end 2009/06/18 16:19:13.692
<<< [Exit status: SUCCESS]

============================
INF FILE

[Version]
Signature=“$WINDOWS NT$”
Class=ECI
ClassGUID={526B6511-D605-4ded-ADA1-B205FBA4FFFF}
provider=%EControls%
DriverVer=06/16/2009,3.1.0.2
CatalogFile=eciusb.cat

;;;;;;;;;;;Class install section
here;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[ClassInstall32.NTX86]
AddReg=ClassInstall32AddReg
CopyFiles=ClassInstall32CopyFiles

[ClassInstall32.NTAMD64]
AddReg=ClassInstall32AddReg
CopyFiles=ClassInstall32CopyFiles

[ClassInstall32AddReg]
HKR,“EControls Devices”
HKR,Installer32,“eciclass.dll,ClassInstallerEntry”
;HKR,EnumPropPages32,eciclass.dll
HKR,Icon,101
HKR,SilentInstall,1

[ClassInstall32CopyFiles]
eciclass.dll

[SourceDisksFiles]
eciclass.dll=1

[DestinationDirs]
ClassInstall32CopyFiles = 11
;;;;;;;;;;;;;END OF CLASS INSTALL SECTION ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

[Manufacturer]
%MfgName%=EControls,NTx86,NTAMD64

; For Win2K
[EControls]
%USB\VID_084F&PID_C050.DeviceDesc%=ECIUSB.Dev, USB\VID_084F&PID_C050

; For XP and later
[EControls.NTX86]
%USB\VID_084F&PID_C050.DeviceDesc%=ECIUSB.Dev, USB\VID_084F&PID_C050

; For XP-64 and later
[EControls.NTAMD64]
%USB\VID_084F&PID_C050.DeviceDesc%=ECIUSB.Dev, USB\VID_084F&PID_C050

[ECIUSB.Dev.NTX86]
CopyFiles=ECIUSB.Files,DLL.Files

[ECIUSB.Dev.NTAMD64]
CopyFiles=ECIUSB.Files,DLL64.Files

[ECIUSB.Dev.NTX86.Services]
Addservice = ECIUSB, %SPSVCINST_ASSOCSERVICE%, ECIUSB.AddService

[ECIUSB.Dev.NTAMD64.Services]
Addservice = ECIUSB, %SPSVCINST_ASSOCSERVICE%, ECIUSB.AddService

[ECIUSB.AddService]
DisplayName = %ECIUSB.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\eciusb.sys
AddReg = ECIUSB.AddReg
LoadOrderGroup = Base

[ECIUSB.AddReg]
;Nothing TODO

[ECIUSB.Files]
eciusb.sys

[DLL.Files]
ecommlib.dll

[DLL64.Files]
ecommlib.dll

[SourceDisksNames.x86]
1=%ECIUSB_INSTALL%,\x86

[SourceDisksNames.amd64]
1=%ECIUSB_INSTALL%,\x64

[SourceDisksFiles.x86]
eciusb.sys=1
ecommlib.dll=1

[SourceDisksFiles.amd64]
eciusb.sys=1
ecommlib.dll=1

[DestinationDirs]
ECIUSB.Files = 12
DLL.Files = 11
DLL64.Files = 10, SysWOW64
DefaultDestDir = 12

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

[ECIUSB.Dev.NTX86.CoInstallers]
AddReg=CoInstaller_AddReg
CopyFiles=CoInstaller_CopyFiles

[ECIUSB.Dev.NTAMD64.CoInstallers]
AddReg=CoInstaller_AddReg
CopyFiles=CoInstaller_CopyFiles

[CoInstaller_CopyFiles]
WdfCoInstaller01007.dll

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

[CoInstaller_AddReg]
HKR,CoInstallers32,0x00010000, “WdfCoInstaller01007.dll,WdfCoInstaller”

[ECIUSB.Dev.NTX86.Wdf]
KmdfService = ECIUSB, ECIUSB_wdfsect

[ECIUSB.Dev.NTAMD64.Wdf]
KmdfService = ECIUSB, ECIUSB_wdfsect

[ECIUSB_wdfsect]
KmdfLibraryVersion = 1.7
;---------------------------------------------------------------;

[Strings]
EControls=“ECI”
MfgName=“ECI”
ECIUSB_INSTALL = “My Device Installation Disk”
USB\VID_084F&PID_C050.DeviceDesc=“My USB Device”
ECIUSB.SvcDesc=“My USB Device”
SPSVCINST_ASSOCSERVICE=0x00000002

Thanks, Jonathan