Hosting multiple FDOs (different INFs) in same .SYS

Hi

I have below in 1 driver

  1. FDO-1 (Acts as bus-driver FDO as well)

  2. Bus driver part (that creates PDO for FDO-2 below)

  3. FDO-2

  4. and 2) have 1 INF - SYSTEM class

  5. has a different INF - NET class

INFs above point to same .SYS file. Different service names. Rest of AddService section almost identical except auxiliary items like display-name/description. Start types same.

With above I thought when I load driver for FD0-2, since the SYS is already loaded, it will skip DriverEntry() and just call AddDevice with a distinct DeviceInit param. But I get Code 38
“When I try to load driver for FDO-2, I get Code 38
Windows cannot load the device driver for this hardware because a previous instance of the device driver is still in memory. (Code 38)”

Is there anyway to have above working or should I move the FDO-2 to a different driver?

A while back, on Win2k8 server I had this working, though slightly different - a single SYS had a bus driver and a protocol driver (different infs, service names, start types, INF class types) and the FDO loaded on the child-PDO created by bus_Driver here was in its own separate .SYS.

Thanks.

Is the Service name the same for both infs? Make the Addservice directives in both infs exactly the same (and that includes the service install section) and see if this loads the driver in fdo2. This can and does work if the service configuration is the same for each different inf

Bent from my phone


From: 30261522100n behalf of
Sent: Tuesday, July 24, 2018 7:43 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Hosting multiple FDOs (different INFs) in same .SYS

Hi

I have below in 1 driver

  1. FDO-1 (Acts as bus-driver FDO as well)

  2. Bus driver part (that creates PDO for FDO-2 below)

  3. FDO-2

  4. and 2) have 1 INF - SYSTEM class

  5. has a different INF - NET class

INFs above point to same .SYS file. Different service names. Rest of AddService section almost identical except auxiliary items like display-name/description. Start types same.

With above I thought when I load driver for FD0-2, since the SYS is already loaded, it will skip DriverEntry() and just call AddDevice with a distinct DeviceInit param. But I get Code 38
“When I try to load driver for FDO-2, I get Code 38
Windows cannot load the device driver for this hardware because a previous instance of the device driver is still in memory. (Code 38)”

Is there anyway to have above working or should I move the FDO-2 to a different driver?

A while back, on Win2k8 server I had this working, though slightly different - a single SYS had a bus driver and a protocol driver (different infs, service names, start types, INF class types) and the FDO loaded on the child-PDO created by bus_Driver here was in its own separate .SYS.

Thanks.


NTDEV is sponsored by OSR

Visit the list online at: https:

MONTHLY seminars on crash dump analysis, WDF, Windows internals and software drivers!
Details at https:

To unsubscribe, visit the List Server section of OSR Online at https:</https:></https:></https:>

Thanks Doron.
After having the ServiceName same in both INF, I am able to get the 2’nd AddDevice.