I have a question about queueing in KMDF. It seems to me like proper
queue handling is core to the successful creation of a KMDF driver, so I
want to make sure I’m getting it.
Let’s say I have a device that can deliver two or three different types
of data; it can handle multiple requests at once, but only one of each
type. One way to handle that is to have a bunch of ioctls with
complicated locking. But let’s also say that it would be more natural
if the applications could use ReadFile and WriteFile for all of the data
types. One reasonable solution is to have the driver expose two or
three names in its namespace.
So, given that, I think I could have a parallel/immediate queue as my
default queue, with a default handler that examines the request to
figure out which data type it is, and then immediately forwards the
request into one of two or three sequential queues. Each of the
sequential queues could have its own EvtIoRead and EvtIoWrite handler,
which could concentrate on their own unique data type without worrying
very much about the other formats. It’s almost like having minidrivers
inside my driver.
Is that a reasonable application of the KMDF queueing model?
–
Tim Roberts, xxxxx@probo.com
Providenza & Boekelheide, Inc.