No drivers are installed for this device

Hello,

In the device manager (windows 7-32) I see a device called:
Intel(R) 7 Series/C216 Chipset Family SMBus Host Controller - 1E22

According to the properties:
No drivers are installed for this device

Can you please explain how this is possible ?
If there is no driver, how can see all properties of this driver:

Intel(R) 7 Series/C216 Chipset Family SMBus Host Controller - 1E22
Device type: System devices
Manufacturer: Intel
Location: PCI bus 0, device 31, function 3

I’m asking because I consider installing my driver and not using a filter.

Thank you,
Zvika

The Intel INF is installing a “null service “ on the device. This is a special semantic which says it is ok to not have a driver installed where the most visible result is that the device is not !ed out in device manager and doesn’t have a problem code

Hi Doron, All,

Thank you very much for your fast reply.

I tried to install a filter driver for the “SMBus Host Controller” mentioned above.

The class of “SMBus Host Controller” is:
Class long name: System devices
Device class guid: {4d36e97d-e325-11ce-bfc1-08002be10318}

So I modified only this in the sample filter.inf:
Class = System
ClassGuid = {4d36e97d-e325-11ce-bfc1-08002be10318}

Then I did the following steps:

  1.           Enumerate a toaster device - **Skipped** 
    
  2.           Open the Device Manager. 
    
  3.           Open the Properties of the **"SMBus Host Controller"** for which you want to install filter. 
    
  4.           Click the Driver tab, and then click Update Driver. 
    
  5.           Follow the wizard's prompts, and when prompted, select the Display a list of the known drivers option. 
    
  6.           Click Have Disk and point to the location of the filter.inf file. 
    
  7.           Proceed through the rest of the install. 
    

The installation was completed with no errors. Upon completion, in the device manager, “SMBus Host Controller” disappeared and instead I got:
Microsoft Toaster Filter

Is this OK ?
What is the reason the “SMBus Host Controller” disappeared ?

Best regards,
Zvika

The name you see in device manager comes from the device description in the INF. Your INF overwrote the the previous device description. did you install your driver as the FDO for the device or as a filter? I would imagine that if you installed it as a filter without an FDO (since the intel INF didn’t supply one) the device would not start.

Hi Doron, All,

The steps I followed are listed in:
C:/WinDDK/7600.16385.1/src/general/toaster/wdm/toaster.htm#filter

They are used to install a filter driver.
I used the same filter.inf (only modified Class, ClassGuid) to install a filter driver for “SMBus Host Controller”.

According the DbgView, upon installation completion, the driver is running.
I saw all KdPrint messages.

But as I said, for some reason, “SMBus Host Controller” disappeared.
When I uninstalled “Microsoft Toaster Filter”, “SMBus Host Controller” appeared again.

Thank you,
Zvika

I don’t know. But I can tell you that you can’t filter a device that doesn’t have a driver installed for it!

SMBUS controllers frequently have no host-based driver installed. In fact on most Intel PCH/ICH packages this is how they are designed. Look at the INF and you’ll see it installed something called “NoDrv”. The point of this is to signal to the system that no host driver is required and to prevent this showing up as an unclaimed device in Device Manager.

The reason that no driver is required for SMBUS controllers is that they’re typically used exclusively from the BIOS (for things like configuring the system DIMMs during boot). You cannot typically claim/use these controllers safely from the host, because they’re usually already controlled by the BIOS… and thus you’ll be interfering with the BIOS use of the controller.

Peter

Hi Doron, Peter, All,

Sorry. My mistake.
My filter driver is for:
Intel(R) QM77 Express Chipset LPC Controller - 1E55
According to the device manager, the driver file is: msisadrv.sys

The sample, src\general\toaster\kmdf\filter is not calling to:
WdfDeviceCreateDeviceInterface
The sample, src\general\toaster\kmdf\func\simple is calling to WdfDeviceCreateDeviceInterface

But this sample enumerates an EvtIoDeviceControl

In my application, I have to send IOCTL requests to the filter driver.
So I called to:
status = WdfDeviceCreateDeviceInterface(
device,
(LPGUID) &GUID_DEVINTERFACE_TOASTER,
NULL // ReferenceString
);

In my application I called to:
DevicePath = GetDevicePath((LPGUID)&GUID_DEVINTERFACE_TOASTER);

m_hDevice = CreateFile(DevicePath,
                     GENERIC_READ|GENERIC_WRITE,
                     FILE_SHARE_READ | FILE_SHARE_WRITE,
                     NULL,
                     OPEN_EXISTING,
                     0,
                     NULL); 

Both calls works fine. I got a handle to the filter driver.

But when I called to:
DeviceIoControl (m_hDevice, Code, …) I got rc=0.

Can you please tell what am I doing wrong ?

Thank you,
Zvika

Hi All,

Just noticed that upon installation, the following DriverEntry KdPrint is not running:
KdPrint((“Toaster Generic Filter Driver Sample - Driver Framework Edition.\n”));

I only see the WdfCoInstaller messages:
[1100] WdfCoInstaller: [08/11/2019 17:06.07.765] DIF_INSTALLDEVICE: Pre-Processing
[1100] WdfCoInstaller: [08/11/2019 17:06.08.186] ReadComponents: WdfSection for Driver Service ToasterFilter using KMDF lib version Major 0x1, minor 0x9
[1100] WdfCoInstaller: [08/11/2019 17:06.08.479] ReadComponents: WdfSection for Driver Service wdffeatured using KMDF lib version Major 0x1, minor 0x9
[1100] WdfCoInstaller: [08/11/2019 17:06.12.594] DIF_INSTALLDEVICE: Post-Processing

Does it make sense ?

Thank you,
Zvika

Hi All,

My mistake. Again.
For some reason, my IOCTL is causing a crash in the filter driver.
Checking.

Thank you,
Zvika