Question on Input Class filter driver on win2k

Hello, all

I have an upper filter driver for the keyboard and mouse classes on NT and
Win2k. This filter needs to load whether an actual input device is attached or
not. Under NT, we simply had a dummy port driver which loaded after i8042prt,
and made sure the class driver was loaded if i8042 failed.

Under Win2k, things are not so simple. When our dummy driver is loaded using
the control panel applets, it replaces the i8042 driver, thus disabling any
real devices which may have been present. We have not found a way to load it
without replacing the standard driver. Is there a way to load a second
keyboard/mouse port driver to ensure the class driver is active?

We also have a related problem with non-legacy PCs, e.g. the iPaq. This system
has only USB devices, and no PS/2 ports at all. The filter does not find the
keyboard class, so it cannot attach. I believe it is because the keyboard
class driver is loaded differently under the HID architecture. However, if we
solve the problem above, I believe we can solve this one with it.

Any answers, hints, etc. would be greatly appreciated.

Paul H. Young - Software Technologies Group
http://www.stg.com
xxxxx@stg.com (708) 547-0110 x239


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

Filter drivers on Win2K are different from NT4.0. On NT4.0, filters find
the target device themselves and attach to it. On Win2K, filters are
loaded as part of stack when the function driver for the device is
loaded.

Your NT4.0 driver will not work on Win2K. You either need to write a
lower class or lower device filter driver. There is sample in the Win2K
DDK (src\input\kbdfiltr) that shows how to do this.

I think you first need to read the WDM docs and understand the concept
of function & filter drivers before trying to solve your problem.

-Eliyas

-----Original Message-----
From: Paul Young [mailto:xxxxx@stg.com]
Sent: Tuesday, April 17, 2001 12:18 PM
To: NT Developers Interest List
Subject: [ntdev] Question on Input Class filter driver on win2k

Hello, all

I have an upper filter driver for the keyboard and mouse classes on NT
and Win2k. This filter needs to load whether an actual input device is
attached or not. Under NT, we simply had a dummy port driver which
loaded after i8042prt, and made sure the class driver was loaded if
i8042 failed.

Under Win2k, things are not so simple. When our dummy driver is loaded
using the control panel applets, it replaces the i8042 driver, thus
disabling any real devices which may have been present. We have not
found a way to load it without replacing the standard driver. Is there a
way to load a second keyboard/mouse port driver to ensure the class
driver is active?

We also have a related problem with non-legacy PCs, e.g. the iPaq. This
system has only USB devices, and no PS/2 ports at all. The filter does
not find the keyboard class, so it cannot attach. I believe it is
because the keyboard class driver is loaded differently under the HID
architecture. However, if we solve the problem above, I believe we can
solve this one with it.

Any answers, hints, etc. would be greatly appreciated.

Paul H. Young - Software Technologies Group
http://www.stg.com
xxxxx@stg.com (708) 547-0110 x239


You are currently subscribed to ntdev as: xxxxx@microsoft.com 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

Thanks for replying, Eliyas. We did modify our class filter to work under
2k. The problem we are trying to solve is that the class driver itself does
not load unless a port (function) driver is present.

If the i8042 driver fails (e.g. when the hardware is not present) we still
want to have our filter present and doing its thing. We haven’t found a
solution under Win2k to do this.

On 04/17/01, ““Eliyas Yakub” ” wrote:
> Filter drivers on Win2K are different from NT4.0. On NT4.0, filters find
> the target device themselves and attach to it. On Win2K, filters are
> loaded as part of stack when the function driver for the device is
> loaded.=20
>
> Your NT4.0 driver will not work on Win2K. You either need to write a
> lower class or lower device filter driver. There is sample in the Win2K
> DDK (src\input\kbdfiltr) that shows how to do this.
>
> I think you first need to read the WDM docs and understand the concept
> of function & filter drivers before trying to solve your problem.
>
> -Eliyas
>
> -----Original Message-----
> From: Paul Young [mailto:xxxxx@stg.com]=20
> Sent: Tuesday, April 17, 2001 12:18 PM
> To: NT Developers Interest List
> Subject: [ntdev] Question on Input Class filter driver on win2k
>
>
> Hello, all
>
> I have an upper filter driver for the keyboard and mouse classes on NT
> and Win2k. This filter needs to load whether an actual input device is
> attached or not. Under NT, we simply had a dummy port driver which
> loaded after i8042prt, and made sure the class driver was loaded if
> i8042 failed.
>
> Under Win2k, things are not so simple. When our dummy driver is loaded
> using the control panel applets, it replaces the i8042 driver, thus
> disabling any real devices which may have been present. We have not
> found a way to load it without replacing the standard driver. Is there a
> way to load a second keyboard/mouse port driver to ensure the class
> driver is active?
>
> We also have a related problem with non-legacy PCs, e.g. the iPaq. This
> system has only USB devices, and no PS/2 ports at all. The filter does
> not find the keyboard class, so it cannot attach. I believe it is
> because the keyboard class driver is loaded differently under the HID
> architecture. However, if we solve the problem above, I believe we can
> solve this one with it.
>
> Any answers, hints, etc. would be greatly appreciated.
>
> --=20
> ----------------------------------------------
> Paul H. Young - Software Technologies Group
> http://www.stg.com
> xxxxx@stg.com (708) 547-0110 x239
> ----------------------------------------------
>
> —
> You are currently subscribed to ntdev as: xxxxx@microsoft.com 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


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

If you want the filter to be present without any real device then you
need to install virtual keyboard/mouse driver. All you need to do is
write a driver similar to i8042prt and have that root-enumerated.
Another simpler approach would be to modify the kbdfilt/Moufilt code and
use that as a function driver for your virtual device.

-Eliyas

-----Original Message-----
From: xxxxx@stg.com [mailto:xxxxx@stg.com]
Sent: Wednesday, April 18, 2001 4:31 AM
To: NT Developers Interest List
Subject: [ntdev] RE: Question on Input Class filter driver on win2k

Thanks for replying, Eliyas. We did modify our class filter to work
under
2k. The problem we are trying to solve is that the class driver itself
does
not load unless a port (function) driver is present.

If the i8042 driver fails (e.g. when the hardware is not present) we
still
want to have our filter present and doing its thing. We haven’t found a
solution under Win2k to do this.

On 04/17/01, ““Eliyas Yakub” ” wrote:
> Filter drivers on Win2K are different from NT4.0. On NT4.0, filters
> find the target device themselves and attach to it. On Win2K, filters

> are loaded as part of stack when the function driver for the device is

> loaded.=20
>
> Your NT4.0 driver will not work on Win2K. You either need to write a
> lower class or lower device filter driver. There is sample in the
> Win2K DDK (src\input\kbdfiltr) that shows how to do this.
>
> I think you first need to read the WDM docs and understand the concept

> of function & filter drivers before trying to solve your problem.
>
> -Eliyas
>
> -----Original Message-----
> From: Paul Young [mailto:xxxxx@stg.com]=20
> Sent: Tuesday, April 17, 2001 12:18 PM
> To: NT Developers Interest List
> Subject: [ntdev] Question on Input Class filter driver on win2k
>
>
> Hello, all
>
> I have an upper filter driver for the keyboard and mouse classes on NT

> and Win2k. This filter needs to load whether an actual input device is

> attached or not. Under NT, we simply had a dummy port driver which
> loaded after i8042prt, and made sure the class driver was loaded if
> i8042 failed.
>
> Under Win2k, things are not so simple. When our dummy driver is loaded

> using the control panel applets, it replaces the i8042 driver, thus
> disabling any real devices which may have been present. We have not
> found a way to load it without replacing the standard driver. Is there

> a way to load a second keyboard/mouse port driver to ensure the class
> driver is active?
>
> We also have a related problem with non-legacy PCs, e.g. the iPaq.
> This system has only USB devices, and no PS/2 ports at all. The filter

> does not find the keyboard class, so it cannot attach. I believe it is

> because the keyboard class driver is loaded differently under the HID
> architecture. However, if we solve the problem above, I believe we can

> solve this one with it.
>
> Any answers, hints, etc. would be greatly appreciated.
>
> --=20
> ----------------------------------------------
> Paul H. Young - Software Technologies Group http://www.stg.com
> xxxxx@stg.com (708) 547-0110 x239
> ----------------------------------------------
>
> —
> You are currently subscribed to ntdev as: xxxxx@microsoft.com To
> unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com
>
> —
> You are currently subscribed to ntdev as: xxxxx@microsoft.com To
> unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@microsoft.com 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

OK - it sounds like this is what I need to do. The ‘dummy’ driver I
mentioned before does this on NT.

I’ve looked at the toastmon example, and this seems like a good starting
place.

I still have this problem: How does the keyboard stack pick up the device?
If I use the KEYBOARD classGUID, the system requires the keyboard control
applet to install the device. This applet only allows replacement or
removal - I don’t want to replace the i8042.

If I make it a new CLASS in the GUID, then put an entry in
…\CurrentControlSet\Control\Class\ClassGUID subkey, will the keyboard
stack pick up my device?

I really appreciate your help.

On 04/18/01, ““Eliyas Yakub” ” wrote:
> If you want the filter to be present without any real device then you
> need to install virtual keyboard/mouse driver. All you need to do is
> write a driver similar to i8042prt and have that root-enumerated.
> Another simpler approach would be to modify the kbdfilt/Moufilt code and
> use that as a function driver for your virtual device.=20
>
> -Eliyas
>
>
> 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

Win2K system can have any number of keyboards and mice. There is no
need to replace the i8042prt driver. You must be doing something wrong
in the INF file or not installing the driver properly.

When you install the virtual keyboard driver, it will show up as another
keyboard device in the device manager.

As I said earlier the kbdfiltr sample is right place to start - not the
toastmon.

Please contact MS technical support and someone will talk to you and set
you on the right path.

-Eliyas

-----Original Message-----
From: xxxxx@stg.com [mailto:xxxxx@stg.com]
Sent: Wednesday, April 18, 2001 9:32 AM
To: NT Developers Interest List
Subject: [ntdev] RE: Question on Input Class filter driver on win2k

OK - it sounds like this is what I need to do. The ‘dummy’ driver I
mentioned before does this on NT.

I’ve looked at the toastmon example, and this seems like a good starting

place.

I still have this problem: How does the keyboard stack pick up the
device?
If I use the KEYBOARD classGUID, the system requires the keyboard
control
applet to install the device. This applet only allows replacement or
removal - I don’t want to replace the i8042.

If I make it a new CLASS in the GUID, then put an entry in
…\CurrentControlSet\Control\Class\ClassGUID subkey, will the keyboard
stack pick up my device?

I really appreciate your help.

On 04/18/01, ““Eliyas Yakub” ” wrote:
> If you want the filter to be present without any real device then you
> need to install virtual keyboard/mouse driver. All you need to do is
> write a driver similar to i8042prt and have that root-enumerated.
> Another simpler approach would be to modify the kbdfilt/Moufilt code
and
> use that as a function driver for your virtual device.=20
>
> -Eliyas
>
>
> You are currently subscribed to ntdev as: xxxxx@microsoft.com
> To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com


You are currently subscribed to ntdev as: xxxxx@microsoft.com
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