Hi,
I’ve been asked to re-visit a driver I wrote in 2004. It’s a filter driver for the ICH6/7 chipset and I need to add support for ICH9, which simply involves adding another PCI vendor/device ID to the INF file - or so I thought!
This driver simply refuses to load on Windows Embedded SP3 with an ICH9 chipset. I’ve searched the net for similar issues but the only mention I’ve found doesn’t appear to be a solution to my particular problem.
During installation it reports an error. An excerpt from the setupact.log file is as follows:
WdfCoInstaller: [11/05/2013 05:10.43.343] DIF_INSTALLDEVICE: Pre-Processing
WdfCoInstaller: [11/05/2013 05:10.43.421] ReadComponents: WdfSection for Driver Service tcowdog using KMDF lib version Major 0x1, minor 0x7
WdfCoInstaller: [11/05/2013 05:10.43.531] DIF_INSTALLDEVICE: Coinstaller version: 1.7.6001
WdfCoInstaller: [11/05/2013 05:10.43.562] DIF_INSTALLDEVICE: KMDF in-memory version: 1.9.7600
WdfCoInstaller: [11/05/2013 05:10.43.625] DIF_INSTALLDEVICE: KMDF on-disk version: 1.9.7600
WdfCoInstaller: [11/05/2013 05:10.43.671] Service Wdf01000 is running
WdfCoInstaller: [11/05/2013 05:10.43.750] DIF_INSTALLDEVICE: On-disk KMDF version is newer than or same as the version of the coinstaller. Update is not required
WdfCoInstaller: [11/05/2013 05:10.44.812] DIF_INSTALLDEVICE: Post-Processing
WdfCoInstaller: [11/05/2013 05:10.44.859] BootApplication: could not open service tcowdog, error error(1060) The specified service does not exist as an installed service.
WdfCoInstaller: [11/05/2013 05:10.44.890] BootApplication: GetStartType error error(87) The parameter is incorrect.
Driver Service name tcowdog
WdfCoInstaller: [11/05/2013 05:10.45.406] GetServiceKeyHandle: RegOpenKeyEx(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcowdog)
WdfCoInstaller: [11/05/2013 05:10.45.437] GetServiceKeyHandle failed: error(2) The system cannot find the file specified.
WdfCoInstaller: [11/05/2013 05:10.45.484] GetDriverImageNameFromServiceName : GetServiceKeyHandle failed error: error(87) The parameter is incorrect.
serviceName tcowdog
WdfCoInstaller: [11/05/2013 05:10.45.515] GenerateDriverServiceMarker: GetDriverImageNameFromServiceName failed: error(87) The parameter is incorrect.
for service tcowdog
WdfCoInstaller: [11/05/2013 05:10.45.765] GetServiceKeyHandle: RegOpenKeyEx(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\tcowdog)
WdfCoInstaller: [11/05/2013 05:10.45.843] GetServiceKeyHandle failed: error(2) The system cannot find the file specified.
WdfCoInstaller: [11/05/2013 05:10.45.875] SetCoinstallerVersion: GetServiceKeyHandle failed: for service tcowdog
And here is the INF file I’m using (which passes INFCHK with warnings about WDF sections not being checked):
;/\*++
;
;Copyright (c) 1990-1999 Microsoft Corporation All rights Reserved
;
;Module Name:
;
; tcowdog.INF
;
;Abstract:
; INF file for installing ICH6/7/9 Watchdog
; This file is dependant on tcowdog.inf
;
;--\*/
[Version]
Signature="$WINDOWS NT$"
Class=
ClassGuid={A73594DC-065A-409b-ACD1-246512C85CFD}
Provider=%ATA%
DriverVer=06/16/1999,5.00.2064
CatalogFile=tcowdog.cat
[DestinationDirs]
DefaultDestDir = 12
; ================= Class section =====================
[ClassInstall32]
Addreg=
[[removed[]
HKR,,,0,%ClassName%
HKR,,Icon,,-5
HKR,,DeviceCharacteristics,0x10001,0x100 ;Use same security checks on relative opens
HKR,,Security,,"D:P(A;;GA;;;SY)(A;;GA;;;BA)" ;Allow generic all access to system and built-in Admin.
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; ICH6 Device Filter Install Section
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
[Manufacturer]
%ATA%=ATA,NT$ARCH$
; For Win2K
[ATA]
; DisplayName Section DeviceId
; ----------- ------- --------
%Ich6Wdog.DeviceDesc%=TCOWdog, PCI\VEN_8086&DEV_2640
%Ich7Wdog.DeviceDesc%=TCOWdog, PCI\VEN_8086&DEV_27B9
%Ich9Wdog.DeviceDesc%=TCOWdog, PCI\VEN_8086&DEV_2930
; For XP and later
[ATA.NT$ARCH$]
%Ich6Wdog.DeviceDesc%=TCOWdog, PCI\VEN_8086&DEV_2640
%Ich7Wdog.DeviceDesc%=TCOWdog, PCI\VEN_8086&DEV_27B9
%Ich9Wdog.DeviceDesc%=TCOWdog, PCI\VEN_8086&DEV_2930
[TCOWdog.NT]
CopyFiles=TCOWdog.NT.Copy
[TCOWdog.NT.Copy]
tcowdog.sys
[TCOWdog.NT.HW]
AddReg = TCOWdog.NT.HW.AddReg
[TCOWdog.NT.HW.AddReg]
HKR,,"UpperFilters",0x00010000,"tcowdog"
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; TCOWDOG Filter Service Section
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
[TCOWdog.NT.Services]
;Do not specify SPSVCINST_ASSOCSERVICE on filter drivers.
AddService = tcowdog,, tcowdog_Service_Inst
[tcowdog_Service_Inst]
DisplayName = %tcowdog.SvcDesc%
ServiceType = 1 ; SERVICE_KERNEL_DRIVER
StartType = 3 ; SERVICE_DEMAND_START
ErrorControl = 1 ; SERVICE_ERROR_NORMAL
ServiceBinary = %12%\tcowdog.sys
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
; Source file information
;\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
[SourceDisksNames]
1 = %DiskId1%,,,""
[SourceDisksFiles]
tcowdog.sys = 1,,
;
;--- ToasterFilter Coinstaller installation ------
;
[DestinationDirs]
TCOWdog_CoInstaller_CopyFiles = 11
[TCOWdog.NT.CoInstallers]
AddReg=TCOWdog_CoInstaller_AddReg
CopyFiles=TCOWdog_CoInstaller_CopyFiles
[TCOWdog_CoInstaller_AddReg]
HKR,,CoInstallers32,0x00010000, "WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll,WdfCoInstaller"
[TCOWdog_CoInstaller_CopyFiles]
WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll
[SourceDisksFiles]
WdfCoInstaller$KMDFCOINSTALLERVERSION$.dll=1 ; make sure the number matches with SourceDisksNames
[TCOWdog.NT.Wdf]
KmdfService = tcowdog, tcowdog_wdfsect
[tcowdog_wdfsect]
KmdfLibraryVersion = $KMDFVERSION$
[Strings]
SPSVCINST_ASSOCSERVICE= 0x00000002
ATA = ""
ClassName = ""
DiskId1 = " Install Disk"
Ich6Wdog.DeviceDesc = "(ICH6) TCO Watchdog"
Ich7Wdog.DeviceDesc = "(ICH7) TCO Watchdog"
Ich9Wdog.DeviceDesc = "(ICH9) TCO Watchdog"
tcowdog.SvcDesc = "TCO Watchdog Driver"
Any hints would be greatly appreciated!?! I’m at my wits end!