function driver on HID

Is it possible to put a function driver on top of an interface with HID endpoints?

The HID protocol doesn’t have endpoints. HID over USB has endpoints. Assuming you are using the inbox hid over usb driver (hidusb+hidclass), I will guess that you are asking can you load a function driver on a PDO stack that hidclass enumerates. The answer is yes, of course you can. You install the fdo just like any other driver. To talk to the pdo, you need to open a handle down the stack. You can do this in UMDF as well if you want

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Dan Newton
Sent: Monday, July 05, 2010 4:36 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] function driver on HID

Is it possible to put a function driver on top of an interface with HID endpoints?


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Nice deconstruction of my single line question :), you correctly enumerated all the implicit assumptions.

Thanks

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-416716-
xxxxx@lists.osr.com] On Behalf Of Doron Holan
Sent: Tuesday, July 06, 2010 4:56 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] function driver on HID

The HID protocol doesn’t have endpoints. HID over USB has endpoints.
Assuming you are using the inbox hid over usb driver (hidusb+hidclass),
I will guess that you are asking can you load a function driver on a
PDO stack that hidclass enumerates. The answer is yes, of course you
can. You install the fdo just like any other driver. To talk to the
pdo, you need to open a handle down the stack. You can do this in UMDF
as well if you want

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-416708-
xxxxx@lists.osr.com] On Behalf Of Dan Newton
Sent: Monday, July 05, 2010 4:36 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] function driver on HID

Is it possible to put a function driver on top of an interface with HID
endpoints?


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

> The HID protocol doesn’t have endpoints. HID over USB has endpoints.

Assuming you are using the inbox hid over usb driver
(hidusb+hidclass),
I will guess that you are asking can you load a function driver on a
PDO stack that hidclass enumerates. The answer is yes, of course you
can. You install the fdo just like any other driver. To talk to the
pdo, you need to open a handle down the stack. You can do this in
UMDF
as well if you want

d

Ok one more… would this work ok with a multi-interface driver?

Ask yourself this, why would it matter at all? The mutli interface part of the usb device is handled below hidusb, so if you are writing client drivers on top of hidclass PDOs, you don’t even see the multi function aspect of the device

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Dan Newton
Sent: Thursday, July 08, 2010 7:26 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] function driver on HID

The HID protocol doesn’t have endpoints. HID over USB has endpoints.
Assuming you are using the inbox hid over usb driver
(hidusb+hidclass), I will guess that you are asking can you load a
function driver on a PDO stack that hidclass enumerates. The answer is
yes, of course you can. You install the fdo just like any other
driver. To talk to the pdo, you need to open a handle down the stack.
You can do this in UMDF as well if you want

d

Ok one more… would this work ok with a multi-interface driver?


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Sure but what if I want my driver to sit on the HID PDO *and* the other non-hid usb interface (like http://www.osronline.com/article.cfm?id=534 but one interface has HID)?

The article you state refers to one driver controlling both interfaces. Your question is about loading on top of two functions split apart by the usb generic parent driver. The answer is yes, you can load your driver on two different PDOs. I would probably use 2 different INFs b/c you want the HID stack to stay in the HID class while the non HID stack will have a different system class

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@nextwindow.com
Sent: Monday, July 12, 2010 3:47 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] function driver on HID

Sure but what if I want my driver to sit on the HID PDO *and* the other non-hid usb interface (like http://www.osronline.com/article.cfm?id=534 but one interface has HID)?


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Ok but that is two different driver instances.

Is it impossible for the one driver instance to control both interfaces when one is hid and one is not?.. I am guessing not without replacing the inbox usb generic parent driver

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-417692-
xxxxx@lists.osr.com] On Behalf Of Doron Holan
Sent: Tuesday, July 13, 2010 11:15 AM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] function driver on HID

The article you state refers to one driver controlling both interfaces.
Your question is about loading on top of two functions split apart by
the usb generic parent driver. The answer is yes, you can load your
driver on two different PDOs. I would probably use 2 different INFs b/c
you want the HID stack to stay in the HID class while the non HID stack
will have a different system class

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-417688-
xxxxx@lists.osr.com] On Behalf Of xxxxx@nextwindow.com
Sent: Monday, July 12, 2010 3:47 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] function driver on HID

Sure but what if I want my driver to sit on the HID PDO *and* the other
non-hid usb interface (like http://www.osronline.com/article.cfm?id=534
but one interface has HID)?


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

You can control both at the generic parent driver instance, but then the device will no longer be enumerated as a HID. Can’t have the generic bus and control it yourself too. What are you trying to do?

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Dan Newton
Sent: Monday, July 12, 2010 4:58 PM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] function driver on HID

Ok but that is two different driver instances.

Is it impossible for the one driver instance to control both interfaces when one is hid and one is not?.. I am guessing not without replacing the inbox usb generic parent driver

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-417692-
xxxxx@lists.osr.com] On Behalf Of Doron Holan
Sent: Tuesday, July 13, 2010 11:15 AM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] function driver on HID

The article you state refers to one driver controlling both interfaces.
Your question is about loading on top of two functions split apart by
the usb generic parent driver. The answer is yes, you can load your
driver on two different PDOs. I would probably use 2 different INFs
b/c you want the HID stack to stay in the HID class while the non HID
stack will have a different system class

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-417688-
xxxxx@lists.osr.com] On Behalf Of xxxxx@nextwindow.com
Sent: Monday, July 12, 2010 3:47 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] function driver on HID

Sure but what if I want my driver to sit on the HID PDO *and* the
other non-hid usb interface (like
http://www.osronline.com/article.cfm?id=534
but one interface has HID)?


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Cool, that would be fine… can you then connect up some interrupt pipes to that underlying interface?

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-417696-
xxxxx@lists.osr.com] On Behalf Of Doron Holan
Sent: Tuesday, July 13, 2010 12:06 PM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] function driver on HID

You can control both at the generic parent driver instance, but then
the device will no longer be enumerated as a HID. Can’t have the
generic bus and control it yourself too. What are you trying to do?

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-417694-
xxxxx@lists.osr.com] On Behalf Of Dan Newton
Sent: Monday, July 12, 2010 4:58 PM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] function driver on HID

Ok but that is two different driver instances.

Is it impossible for the one driver instance to control both interfaces
when one is hid and one is not?.. I am guessing not without replacing
the inbox usb generic parent driver

> -----Original Message-----
> From: xxxxx@lists.osr.com [mailto:bounce-417692-
> xxxxx@lists.osr.com] On Behalf Of Doron Holan
> Sent: Tuesday, July 13, 2010 11:15 AM
> To: Windows System Software Devs Interest List
> Subject: RE: RE:[ntdev] function driver on HID
>
> The article you state refers to one driver controlling both
interfaces.
> Your question is about loading on top of two functions split apart by
> the usb generic parent driver. The answer is yes, you can load your
> driver on two different PDOs. I would probably use 2 different INFs
> b/c you want the HID stack to stay in the HID class while the non HID
> stack will have a different system class
>
> d
>
> -----Original Message-----
> From: xxxxx@lists.osr.com [mailto:bounce-417688-
> xxxxx@lists.osr.com] On Behalf Of xxxxx@nextwindow.com
> Sent: Monday, July 12, 2010 3:47 PM
> To: Windows System Software Devs Interest List
> Subject: RE:[ntdev] function driver on HID
>
> Sure but what if I want my driver to sit on the HID PDO *and* the
> other non-hid usb interface (like
> http://www.osronline.com/article.cfm?id=534
> but one interface has HID)?
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer

You can then do whatever you want. It’s your driver and your interface

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Dan Newton
Sent: Monday, July 12, 2010 7:26 PM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] function driver on HID

Cool, that would be fine… can you then connect up some interrupt pipes to that underlying interface?

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-417696-
xxxxx@lists.osr.com] On Behalf Of Doron Holan
Sent: Tuesday, July 13, 2010 12:06 PM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] function driver on HID

You can control both at the generic parent driver instance, but then
the device will no longer be enumerated as a HID. Can’t have the
generic bus and control it yourself too. What are you trying to do?

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-417694-
xxxxx@lists.osr.com] On Behalf Of Dan Newton
Sent: Monday, July 12, 2010 4:58 PM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] function driver on HID

Ok but that is two different driver instances.

Is it impossible for the one driver instance to control both interfaces
when one is hid and one is not?.. I am guessing not without replacing
the inbox usb generic parent driver

> -----Original Message-----
> From: xxxxx@lists.osr.com [mailto:bounce-417692-
> xxxxx@lists.osr.com] On Behalf Of Doron Holan
> Sent: Tuesday, July 13, 2010 11:15 AM
> To: Windows System Software Devs Interest List
> Subject: RE: RE:[ntdev] function driver on HID
>
> The article you state refers to one driver controlling both
interfaces.
> Your question is about loading on top of two functions split apart by
> the usb generic parent driver. The answer is yes, you can load your
> driver on two different PDOs. I would probably use 2 different INFs
> b/c you want the HID stack to stay in the HID class while the non HID
> stack will have a different system class
>
> d
>
> -----Original Message-----
> From: xxxxx@lists.osr.com [mailto:bounce-417688-
> xxxxx@lists.osr.com] On Behalf Of xxxxx@nextwindow.com
> Sent: Monday, July 12, 2010 3:47 PM
> To: Windows System Software Devs Interest List
> Subject: RE:[ntdev] function driver on HID
>
> Sure but what if I want my driver to sit on the HID PDO *and* the
> other non-hid usb interface (like
> http://www.osronline.com/article.cfm?id=534
> but one interface has HID)?
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer
>
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at
http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

Dan Newton wrote:

Cool, that would be fine… can you then connect up some interrupt pipes to that underlying interface?

Your terminology is a bit confusing here. In USB, an interface is
merely a way to group the endpoints. You can’t “connect” pipes to an
interface. Instead, the device’s configuration descriptor will separate
the pipes into groups. Within a single configuration, a given pipe
belongs to exactly one interface for its life.


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