Control Driver

Hi,

I’m writing a purely software driver (no hardware) that communicates with Usermode application and also a fellow driver (not in the same stack). I need some help with the following questions (or any hints).

  1. What is the CLASS/CLASSGUID that I should specify in the INF file for this (software) device?

  2. In my setup, another system driver (from a different provider) will install a “device” exposed by my driver. So how I advertise my device class/id to the system such that my drivers gets invoked.
    I’m guessing I need to do using “devcon.exe update mydriver.inf myhwid” - is this right?

  3. What is the best (recommended) way to install such a driver in the system, so that User application IOCTLs can be serviced and also fellow drivers can communicate?

Thx.

xxxxx@hotmail.com wrote:

I’m writing a purely software driver (no hardware) that communicates with Usermode application and also a fellow driver (not in the same stack). I need some help with the following questions (or any hints).

  1. What is the CLASS/CLASSGUID that I should specify in the INF file for this (software) device?

If your driver doesn’t fit any of the categories, make up a new one
(with a new GUID). Many people think the list of device classes is
somehow sacred or mandated by Congress. Not true. You can make your
own just by putting your own name and GUID in your INF. Your category
will magically appear in Device Manager. You can even supply your own icon.

  1. In my setup, another system driver (from a different provider) will install a “device” exposed by my driver. So how I advertise my device class/id to the system such that my drivers gets invoked.
    I’m guessing I need to do using “devcon.exe update mydriver.inf myhwid” - is this right?

I don’t think you mean “exposed”. You mean another driver will create a
device node that your INF will match, right? In that case, just
pre-install your driver (using something like dpinst), and it will
automatically be loaded when the new device is created.

  1. What is the best (recommended) way to install such a driver in the system, so that User application IOCTLs can be serviced and also fellow drivers can communicate?

Not sure I understand. It will be installed like all PnP drivers, and
live in system32\drivers.


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

Thanks Tim! Now its clear.

> 1. What is the CLASS/CLASSGUID that I should specify in the INF file for this (software) device?

“System” is maybe OK.

  1. What is the best (recommended) way to install such a driver in the system, so that User application
    IOCTLs can be serviced and also fellow drivers can communicate?

Any PDO-creating PnP drivers should be installed by PnP means - SetupDiXxx (devcon is the sample), DifXApp etc.


Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com

> pre-install your driver (using something like dpinst)

“devcon dp_add” does the same and has the source (call to SetupCopyOEMInf).


Maxim S. Shatskih
Windows DDK MVP
xxxxx@storagecraft.com
http://www.storagecraft.com