How can an application dynamically load a WDM driver under Windows 98?

I have an application which was originally written for NT4 which
dynamically loads its kernel-mode device driver using the SC Manager
technique which is well documented here.

I now have to support Windows 98 and have modified the driver
by replaciing NTDDK.H with WDM.H and the driver seems to work fine on
Win 98 - providing I put it in the registry and reboot. However, I really
need to load and start it dynamically - a reboot is unacceptable.

I’ve tried the CreateFile and VXDLDR IOCtl methods which are used
to load VxDs but neither works on a WDM driver - how should an
application load a WDM driver under Windows 98?

By the way, the driver does not handle any physical device - it is just
there to allow me to snoop on the hardware of the computer. It therefore
does not care about PnP or power management - nor is it associated with
any particular bus (so I can’t rely on a bus driver to load it).

Any help would be greatly appreciated.


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Hello,

for windows 2000 I have written a software bus enumerator driver
like toaster sample from DDK. When I have this driver installed I can add and
remove each pnp driver with my own hardware ID. A dll interface like

ULONG WINAPI pnpPluginDevice(
ULONG ulID,
PCHAR pszHardwareID,
PCHAR pszDisplayText
);

ULONG WINAPI pnpPlugoutDevice(ULONG ulID);

can trigger installation, start and stop from any software based
PnP WDM driver. The same technic must run in >= Windows 98.

elli


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Thanks for the info Mathias. It raises the question, how did you install
the
bus enumerator driver in the first place - with a reboot? I can see the
adavantage of what you describe if the driver has to be frequently loaded
and unloaded but I am developing some diagnostics which will probably only
ever run
once on any particular computer. I would like to avoid any reboots - if
possible.

On 06/15/01, “Mathias Ellinger ” wrote:
> Hello,
>
> for windows 2000 I have written a software bus enumerator driver
> like toaster sample from DDK. When I have this driver installed I can add and
> remove each pnp driver with my own hardware ID. A dll interface like
>
> ULONG WINAPI pnpPluginDevice(
> ULONG ulID,
> PCHAR pszHardwareID,
> PCHAR pszDisplayText
> );
>
>
> ULONG WINAPI pnpPlugoutDevice(ULONG ulID);
>
> can trigger installation, start and stop from any software based
> PnP WDM driver. The same technic must run in >= Windows 98.
>
> elli
>
>
>
> —
> You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com

Hello,

It raises the question, how did you install the
bus enumerator driver in the first place - with a reboot?

No, I have adapted the Kernel DDK sample general\setup to my own
world and now I have a Dll wich can install/remove each INF
based driver. With the right INF for the driver … the software
bus enumerator is started after installation and ready to use.

adavantage of what you describe if the driver has to be frequently loaded
and unloaded but I am developing some diagnostics which will probably only
ever run once on any particular computer.

where is the problem. The load/unload for some time is a feature. You
can load the driver one time and then the driver is running until the
sytem is going to shutdown.

I would like to avoid any reboots - if possible.

I too, this is my main goal for my kernel bluetooth stack installation.
Only respond one time for the first PnP device (usb,pcmcia) and that
is. The rest installation for the driver installation stuff is
without any user action and reboot.

elli


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com