Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

Home NTDEV
Before Posting...
Please check out the Community Guidelines in the Announcements and Administration Category.

More Info on Driver Writing and Debugging


The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.


Check out The OSR Learning Library at: https://www.osr.com/osr-learning-library/


Keyboard filter driver HCK signing requirement.

jsenthiljsenthil Member Posts: 6

Hi All,
Is there a requirement from Microsoft that the a keyboard filter driver must be a KMDF based in order to get it HCK certified?
If yes, can some one point me to some material on this please? Thanks.

Comments

  • jsenthiljsenthil Member Posts: 6

    And, can the upper filter driver for keyboard class can be installed without rebooting the computer? I guess not. Correct?

  • Tim_RobertsTim_Roberts Member - All Emails Posts: 13,695

    Correct. Filter drivers can only be added when a device is starting up. However, you don't have to reboot; you can disable/enable the device in Device Manager, or use "devcon restart".

    Tim Roberts, [email protected]
    Providenza & Boekelheide, Inc.

  • jsenthiljsenthil Member Posts: 6

    Thanks Tim.

    I am aware that the keyboard class filter is installed for all keyboards. Ie, USB/BT and PS2 etc. ie, the filter would be sitting on top of the PS2 stack as well. PS2 stack by design cannot be disabled/enabled. Given this, how do I get this filter driver signed? We know that the HLK tests would pound the driver stack with a sequence of disable enable operation which the PS2 won't be able to handle.

  • jsenthiljsenthil Member Posts: 6

    Can a keyboard class upper filter driver -that is installed using an inf- pass the HCK certification?
    If yes, what class does this test fall into? It appears that the input class doesn't really cover the keyboard/mouse class filter stack.
    And, is there a requirement from Microsoft that the a keyboard filter driver must be a KMDF based in order to get it HCK certified?
    Thanks.

  • Tim_RobertsTim_Roberts Member - All Emails Posts: 13,695

    WHQL tests devices. Your keyboard/mouse filter is part of an input device. That's the class.

    You aren't going to have any PS/2 drivers unless you have a PS/2 device. And you don't have to restart EVERY device -- just the one you want to test.

    Why do you think Microsoft requires keyboard filters to be KMDF? Unless you find it in a document, it's just a rumor. I doubt they would care.

    Tim Roberts, [email protected]
    Providenza & Boekelheide, Inc.

  • jsenthiljsenthil Member Posts: 6

    About restarting the device stack: My filter will be a keyboard class upper filter, not specific to a particular device, so it would be on top of a PS2 device if there is one present on the computer. Does the WHQL tests treat the PS2 stack differently to accommodate the disable/enable kind of PNP tests?

    About the keyboard filters to be KMDF: Doron Holan has said "IIRC, I am pretty darn sure that all input drivers, filters and functional, must be KMDF to get signed", in this thread https://community.osr.com/discussion/149218/keyboard-class-filter-drivers-and-whql

    However, I couldn't find any reference from Microsoft on this. Thus I would like to get some clarity on this.

  • Peter_Viscarola_(OSR)Peter_Viscarola_(OSR) Administrator Posts: 8,158

    The architecture constraints, if any, are in the Windows logo docs. This is the doc that you need to look at to know, for example what types of operations you need to support and the like.

    Peter

    Peter Viscarola
    OSR
    @OSRDrivers

  • Peter_Viscarola_(OSR)Peter_Viscarola_(OSR) Administrator Posts: 8,158
    edited November 10

    To follow-up my own post, you can find the relevant docs here.

    Device.Input.Keyboard.KernelModeDriversUseWdfKmdf
    Keyboard kernel-mode drivers must use the WDF-KMDF.
    Description
    Third-party keyboard kernel-mode drivers must be ported to the WDF KMDF model.

    Peter

    Peter Viscarola
    OSR
    @OSRDrivers

  • Tim_RobertsTim_Roberts Member - All Emails Posts: 13,695

    About restarting the device stack: My filter will be a keyboard class upper filter, not specific to a particular device, so it would be
    on top of a PS2 device if there is one present on the computer. Does the WHQL tests treat the PS2 stack differently to
    accommodate the disable/enable kind of PNP tests?

    I don't understand why you're worrying about this. If your test system does not have a PS/2 device, and very few do, then the situation will not arise. WHQL tests specific devices. It doesn't test "class filters", it tests specific devices that happen to have your filter installed. It does not (can not) test every combination that can possibly arise.

    Tim Roberts, [email protected]
    Providenza & Boekelheide, Inc.

  • jsenthiljsenthil Member Posts: 6

    My filter is a keyboard class upper filter for all keyboards on the system, not specific to a particular device. Thus the INF will not be for a specific device. That's why I would like to get some clarity on this.

    Following Microsoft article shows such a class driver is possible.
    https://docs.microsoft.com/en-us/windows-hardware/drivers/install/installing-a-filter-driver

    If WHQL can only test a device, how do I get such a class filter driver WHQL certified? Can it even be WHQL tested for that matter?

  • Tim_RobertsTim_Roberts Member - All Emails Posts: 13,695

    Of course a class filter driver is possible, but all that affects is what triggers the driver to be loaded. Remember, you will get a separate instance of your driver for each device in the class. Each such device stands alone.

    A class filter driver doesn't work any different than a device filter driver, and WHQL doesn't know the difference. All you're trying to do is get a successful WHQL log for a device for which your filter is loaded. That's all it takes to pass. You don't have to demonstrate filtering EVERY kind of device, and there are no tests that are specific to class filters.

    Tim Roberts, [email protected]
    Providenza & Boekelheide, Inc.

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Upcoming OSR Seminars
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!
Writing WDF Drivers 7 Dec 2020 LIVE ONLINE
Internals & Software Drivers 25 Jan 2021 LIVE ONLINE
Developing Minifilters 8 March 2021 LIVE ONLINE