Interfaces for application-driver communication

> The one and the most common way of application-driver interface is the
ioctl

interface.

Another way of doing it is(I had tried it earlier with Windows 2000 and
was
successful) through socket communication - something like opening up a TCP

Kernel-mode sockets code will be by far more complex then the pended IOCTL,
maybe 50 times more complex or such.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

Quoting Monisha Barooah :

> Hi Everybody,
> I wanted some info regarding the interfaces for application-driver
> communication in the Windows XP operating system.
>
> The one and the most common way of application-driver interface is the
> ioctl interface.
>
> I wanted to know if there are any other means of implementing the
> application-driver communication interface in the windows operating system.
>

I have found WMI useful for auxilary i/o, control, monitoring etc…

> Is it possible to have global event objects in the system - something like
> a particular event object being instantiated at the windows user environment
> and such that a signalling done by that particular event, wakes up a
> particular thread in the windows kernel environment.
>
> This I know is not possible under a normal condition. Is there some means
> to declare an event with some special characteristics(in the user space) so
> that the singalling done by it therein is valid for threads waiting on it at
> the kernel environment.

You may define a WMI Method that will signal/reset your Kernel Mode event. No
need for the event to exist in User Mode at all.>

You can create an event and share it with your kernel drivers. If you
search the ntdev archives you can find out how to do that.

I’m curious though - what makes this seem better to you than using the
standard read/write/ioctl interface?

-p


From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Monisha Barooah
Sent: Monday, March 20, 2006 10:01 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Interfaces for application-driver communication

Hi Everybody,
I wanted some info regarding the interfaces for application-driver
communication in the Windows XP operating system.

The one and the most common way of application-driver interface is
the ioctl interface.

Another way of doing it is(I had tried it earlier with Windows 2000
and was successful) through socket communication - something like
opening up a TCP server waiting at a particular TCP port(the socket
library developed through the windows TDI interface) in the kernel
environment and sending requests to the TCP server from a TCP client
application running in the windows user space environment.

I wanted to know if there are any other means of implementing the
application-driver communication interface in the windows operating
system.

Is it possible to have global event objects in the system - something
like a particular event object being instantiated at the windows user
environment and such that a signalling done by that particular event,
wakes up a particular thread in the windows kernel environment.

This I know is not possible under a normal condition. Is there some
means to declare an event with some special characteristics(in the user
space) so that the singalling done by it therein is valid for threads
waiting on it at the kernel environment.

Please help let me know if there is any info on it.

Thanks,
Monisha.


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

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

Monisha Barooah wrote:

I wanted some info regarding the interfaces for application-driver
communication in the Windows XP operating system.

The one and the most common way of application-driver interface is
the ioctl interface.

Another way of doing it is(I had tried it earlier with Windows 2000
and was successful) through socket communication - something like
opening up a TCP server waiting at a particular TCP port(the socket
library developed through the windows TDI interface) in the kernel
environment and sending requests to the TCP server from a TCP client
application running in the windows user space environment.

I wanted to know if there are any other means of implementing the
application-driver communication interface in the windows operating
system.

Is it possible to have global event objects in the system -
something like a particular event object being instantiated at the
windows user environment and such that a signalling done by that
particular event, wakes up a particular thread in the windows kernel
environment.

When I needed a low bandwidth out-of-band communication path from a KM
driver in a DirectShow graph out to a UM filter elsewhere in the graph,
I used a named pipe. In fact, I was surprised at how easy it was. Of
course, both ends live in the same process, and I could make IRQL
guarantees.


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