Error in Installation

I am trying to install a Volume Filter using devcon. The operation failed with the error “The installation failed because a function driver was not specified for the device instance” when i check the setupapi.log file during the installation for my Service. All the other functions passed fine.

I ran ChkInf for my .inf file and it reported no error. I am totally confused as to what the problem is. Little help with this issue is appreciated.


[Version]
Signature=“$WINDOWS NT$”
Class=Volume
ClassGuid={71a27cdd-812a-11d0-bec7-08002be2092f}
DriverVer=05/01/2010,1.0.0
Provider=%ERUCES%
CatalogFile=efe_volumefilter.cat
;Copyright 2010 by Eruces inc.

[Manufacturer]
%ERUCES%=Standard,NT

[Standard.NT]
%ErucesVolumeFilter_Desc%=EfeVolumeFilter,efe_volumefilter

[EfeVolumeFilter.NT]
CopyFiles=EfeVolumeFilter.NT.Copy
AddReg=EfeVolumeFilter_AddReg

[EfeVolumeFilter_AddReg]
HKLM,SYSTEM\CurrentControlSet\Control\Class{71a27cdd-812a-11d0-bec7-08002be2092f},“UpperFilters”,0x00010008,“efe_volumefilter”

[EfeVolumeFilter.NT.Copy]
efe_volumefilter.sys

[DestinationDirs]
DefaultDestDir=12

[SourceDisksFiles]
efe_volumefilter.sys=1,

[SourceDisksNames]
1=%DiskId1%,“”

;
;----Services Section----
;

[EfeVolumeFilter.NT.Services]
AddService=efe_volumefilter,0x00000001,EfeVolumeFilter.AddService

[EfeVolumeFilter.AddService]
DisplayName=“EfeVolumeFilter”
ServiceType=0x00000001
StartType=0
ErrorControl=1
ServiceBinary=%12%\efe_volumefilter.sys

;
;----CoInstaller Section---------
;
[DestinationDirs]
EfeVolumeFilter_CoInstaller_CopyFiles = 11

[EfeVolumeFilter.NT.CoInstallers]
AddReg=EfeVolumeFilter_CoInstaller_AddReg
CopyFiles= EfeVolumeFilter_CoInstaller_CopyFiles

[EfeVolumeFilter_CoInstaller_AddReg]
HKR,CoInstallers32,0x00010000, “WdfCoinstaller01009.dll,WdfCoInstaller”

[EfeVolumeFilter_CoInstaller_CopyFiles]
WdfCoinstaller01009.dll

[SourceDisksFiles]
WdfCoinstaller01009.dll=1

[EfeVolumeFilter.NT.Wdf]
KmdfService = efe_volumefilter,EfeVolumeFilter_wdfsect

[EfeVolumeFilter_wdfsect]
KmdfLibraryVersion = 1.9

;
;------Strings-----
;
[Strings]
ERUCES = “Eruces Inc.”
ErucesVolumeFilter_Desc = “Eruces Volume Filter”
GROUP = “System Bus Extender”
DiskId1 = “Eruces Volume Filter Installation Disk #1

xxxxx@hotmail.com wrote:

I am trying to install a Volume Filter using devcon. The operation failed with the error “The installation failed because a function driver was not specified for the device instance” when i check the setupapi.log file during the installation for my Service. All the other functions passed fine.

I ran ChkInf for my .inf file and it reported no error. I am totally confused as to what the problem is. Little help with this issue is appreciated.

What, exactly, was your “devcon” command line?


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

devcon install efe_volumefilter.inf efe_volumefilter

I looked up another sample from OSR called wdffltr which was using WdfPreDeviceInstall etc for installing the filter in that sample. The documentation says that these operations are basically used for non-pnp driver installations.

Anyways i used those functions and created an app to install the Volume filter. It installs everything but on few machines i see blue screen saying INACCESSIBLE_BOOT_DEVICE and when i debug it i cannot even see the driver entry for my driver called as if my driver was not able to load and thus the whole device stack got screwed up.

Now i am back to square one. Any help would be really appreciated if you can shed some light on this.

The following is the output from setupapi.log

[SetupAPI Log]
OS Version = 5.1.2600 Service Pack 3
Platform ID = 2 (NT)
Service Pack = 3.0
Suite = 0x0100
Product Type = 1
Architecture = x86
[2010/05/12 16:08:49 1652.107]
#-199 Executing “C:\Volume Filter\devcon.exe” with command line: devcon install “C:\Volume Filter\efe_volumefilter.inf” efe_volumefilter
#I060 Set selected driver.
#-019 Searching for hardware ID(s): efe_volumefilter
#I022 Found “efe_volumefilter” in c:\volume filter\efe_volumefilter.inf; Device: “Eruces Volume Filter”; Driver: “Eruces Volume Filter”; Provider: “Eruces Inc.”; Mfg: “Eruces Inc.”; Section name: “EfeVolumeFilter”.
#I087 Driver node not trusted, rank changed from 0x00000000 to 0x00008000.
#I023 Actual install section: [EfeVolumeFilter.NT]. Rank: 0x00008000. Effective driver date: 05/01/2010.
#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#I063 Selected driver installs from section [EfeVolumeFilter] in “c:\volume filter\efe_volumefilter.inf”.
#I320 Class GUID of device remains: {71A27CDD-812A-11D0-BEC7-08002BE2092F}.
#I060 Set selected driver.
#I058 Selected best compatible driver.
#-124 Doing copy-only install of “ROOT\VOLUME\0000”.
#E366 An unsigned or incorrectly signed file “c:\volume filter\efe_volumefilter.cat” for driver “Eruces Volume Filter” will be installed (Policy=Warn, user said ok). Error 0x800b0100: No signature was present in the subject.
#-024 Copying file “c:\volume filter\efe_volumefilter.sys” to “C:\WINDOWS\system32\DRIVERS\efe_volumefilter.sys”.
#E362 An unsigned or incorrectly signed file “c:\volume filter\efe_volumefilter.sys” for driver “Eruces Volume Filter” will be installed (Policy=Warn). Error 0x800b0100: No signature was present in the subject.
#-336 Copying file “c:\volume filter\WdfCoinstaller01009.dll” to “C:\WINDOWS\system32\WdfCoinstaller01009.dll” via temporary file “C:\WINDOWS\system32\SET1F.tmp”.
#E362 An unsigned or incorrectly signed file “c:\volume filter\WdfCoinstaller01009.dll” for driver “Eruces Volume Filter” will be installed (Policy=Warn). Error 0x800b0100: No signature was present in the subject.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [EfeVolumeFilter.NT.Interfaces] from “c:\volume filter\efe_volumefilter.inf”.
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of “ROOT\VOLUME\0000”.
#E362 An unsigned or incorrectly signed file “c:\volume filter\efe_volumefilter.cat” for driver “Eruces Volume Filter” will be installed (Policy=Warn). Error 0x800b0100: No signature was present in the subject.
#-035 Processing service Add/Delete section [EfeVolumeFilter.NT.Services].
#E280 Add Service: Failed to get configuration of service “efe_volumefilter”. Error 2: The system cannot find the file specified.
#E033 Error 2: The system cannot find the file specified.
#E275 Error while installing services. Error 2: The system cannot find the file specified.
#E122 Device install failed. Error 2: The system cannot find the file specified.
#E157 Default installer failed. Error 2: The system cannot find the file specified.
#I060 Set selected driver.
#I125 Installing NULL driver for “ROOT\VOLUME\0000”.
#I121 Device install of “ROOT\VOLUME\0000” finished successfully.
[2010/05/12 16:17:33 1260.103]
#-199 Executing “C:\Volume Filter\devcon.exe” with command line: devcon install efe_volumefilter.inf efe_volumefilter
#I060 Set selected driver.
#-019 Searching for hardware ID(s): efe_volumefilter
#I022 Found “efe_volumefilter” in c:\volume filter\efe_volumefilter.inf; Device: “Eruces Volume Filter”; Driver: “Eruces Volume Filter”; Provider: “Eruces Inc.”; Mfg: “Eruces Inc.”; Section name: “EfeVolumeFilter”.
#I087 Driver node not trusted, rank changed from 0x00000000 to 0x00008000.
#I023 Actual install section: [EfeVolumeFilter.NT]. Rank: 0x00008000. Effective driver date: 05/01/2010.
#-166 Device install function: DIF_SELECTBESTCOMPATDRV.
#I063 Selected driver installs from section [EfeVolumeFilter] in “c:\volume filter\efe_volumefilter.inf”.
#I320 Class GUID of device remains: {71A27CDD-812A-11D0-BEC7-08002BE2092F}.
#I060 Set selected driver.
#I058 Selected best compatible driver.
#-124 Doing copy-only install of “ROOT\VOLUME\0000”.
#E366 An unsigned or incorrectly signed file “c:\volume filter\efe_volumefilter.cat” for driver “Eruces Volume Filter” will be installed (Policy=Warn, user said ok). Error 0x800b0100: No signature was present in the subject.
#-024 Copying file “c:\volume filter\efe_volumefilter.sys” to “C:\WINDOWS\system32\DRIVERS\efe_volumefilter.sys”.
#E362 An unsigned or incorrectly signed file “c:\volume filter\efe_volumefilter.sys” for driver “Eruces Volume Filter” will be installed (Policy=Warn). Error 0x800b0100: No signature was present in the subject.
#-336 Copying file “c:\volume filter\WdfCoinstaller01009.dll” to “C:\WINDOWS\system32\WdfCoinstaller01009.dll” via temporary file “C:\WINDOWS\system32\SET8.tmp”.
#E362 An unsigned or incorrectly signed file “c:\volume filter\WdfCoinstaller01009.dll” for driver “Eruces Volume Filter” will be installed (Policy=Warn). Error 0x800b0100: No signature was present in the subject.
#-166 Device install function: DIF_REGISTER_COINSTALLERS.
#I056 Coinstallers registered.
#-166 Device install function: DIF_INSTALLINTERFACES.
#-011 Installing section [EfeVolumeFilter.NT.Interfaces] from “c:\volume filter\efe_volumefilter.inf”.
#I054 Interfaces installed.
#-166 Device install function: DIF_INSTALLDEVICE.
#I123 Doing full install of “ROOT\VOLUME\0000”.
#E362 An unsigned or incorrectly signed file “c:\volume filter\efe_volumefilter.cat” for driver “Eruces Volume Filter” will be installed (Policy=Warn). Error 0x800b0100: No signature was present in the subject.
#-035 Processing service Add/Delete section [EfeVolumeFilter.NT.Services].
#E275 Error while installing services. Error 0xe0000219: The installation failed because a function driver was not specified for this device instance.
#E122 Device install failed. Error 0xe0000219: The installation failed because a function driver was not specified for this device instance.
#E157 Default installer failed. Error 0xe0000219: The installation failed because a function driver was not specified for this device instance.
#W422 Coinstaller 1 (Post Processing) modified status. Error 87: The parameter is incorrect.
#I060 Set selected driver.
#I125 Installing NULL driver for “ROOT\VOLUME\0000”.
#I121 Device install of “ROOT\VOLUME\0000” finished successfully.

I would start by checking this message out:

Add Service: Failed to get configuration of service “efe_volumefilter”. Error 2: The system cannot find the file specified.

Good luck,

mm

From the looks of it I can only see that it is considering efe_volumefilter as a device and thus searching for a function driver for this device which it cannot find.

Now the question which has always bothered me and i have not able to find an answer anywhere is what to provide a hardware ID for a Volume Filter.

xxxxx@hotmail.com wrote:

From the looks of it I can only see that it is considering efe_volumefilter as a device and thus searching for a function driver for this device which it cannot find.

Of course it is. I started a reply to tell you that when you mentioned
you were using “devcon install”, but your own reply implied that you had
figured this out on your own and had written your own application
instead. Thus, I was surprised to see you post the API log.

So, I’ll make it clear: you can’t do this with a PNP INF. You might
possibly be able to do it with a [Default.Install] INF, but the right
way (especially with KMDF) is to write an install app.

Now the question which has always bothered me and i have not able to find an answer anywhere is what to provide a hardware ID for a Volume Filter.

It is awkward. That’s why the USUAL mechanism is to make yourself a
class upper filter for disk volumes, then just make yourself do nothing
for volumes you don’t want to filter.


Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.

Thanks Tim.

By the way i was thinking about this. DriverPackageInstall function from DifxAPI tells you that by putting DriverPackageType=ClassFilter in your PNP INF will install you class filter but it does not seems to be the case. Secondly WdfPreDeviceInstall from the documentation is basically used for Non-PNP device installs. I am just confused with the documentation because regarding the class filters it is almost totally vague and confusing.