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/


launching a user-mode program

OSR_Community_UserOSR_Community_User Member Posts: 110,217
In all the discussions I've been reading about communicating between kernel
drivers and user-mode programs, the assumption has always been that the
user-mode program is already running. I've got a situation where my driver
monitors for a specific condition and when that condition occurs, needs to
start a user-mode program to perform some actions. These actions do not
require user input but they are too complex to be moved down into the
driver. There is no communication between the driver and the user program
once the program is running. It is NOT acceptable in my situation for the
user-mode program to be running all the time and simply waiting for an
event signal from the driver. I used the _shell_ShellExecute function in my
Windows 95 version of this system, but I cannot find any equivalent in
Windows NT. So ... how do I launch my user program once my driver detects
its condition?

Any and all suggestions on how to solve this problem are greatly
appreciated.

Judy Labovitz

[email protected]

Comments

  • Don_Burn_1Don_Burn_1 Member Posts: 4,311
    The normal approach for something like this is a small service that
    you run all the time that invokes the application as needed.

    Don Burn


    ----- Original Message -----
    From: <[email protected]>
    To: "NT Developers Interest List" <[email protected]>
    Sent: Wednesday, March 15, 2000 12:21 PM
    Subject: [ntdev] launching a user-mode program


    > In all the discussions I've been reading about communicating between
    kernel
    > drivers and user-mode programs, the assumption has always been that the
    > user-mode program is already running. I've got a situation where my driver
    > monitors for a specific condition and when that condition occurs, needs to
    > start a user-mode program to perform some actions. These actions do not
    > require user input but they are too complex to be moved down into the
    > driver. There is no communication between the driver and the user program
    > once the program is running. It is NOT acceptable in my situation for the
    > user-mode program to be running all the time and simply waiting for an
    > event signal from the driver. I used the _shell_ShellExecute function in
    my
    > Windows 95 version of this system, but I cannot find any equivalent in
    > Windows NT. So ... how do I launch my user program once my driver detects
    > its condition?
    >
    > Any and all suggestions on how to solve this problem are greatly
    > appreciated.
    >
    > Judy Labovitz
    >
    > [email protected]
    >
    > ---
    > You are currently subscribed to ntdev as: [email protected]
    > To unsubscribe send a blank email to $subst('Email.Unsub')
    >
  • OSR_Community_UserOSR_Community_User Member Posts: 110,217
    How about a tiny user-mode program that starts the "real"
    one?

    The canonical answer would seem to be an APC into some other
    pre-existing program to force that to fire up your "real"
    one.

    -----Original Message-----
    From: [email protected] [mailto:[email protected]]
    Sent: Wednesday, March 15, 2000 7:21 AM
    To: NT Developers Interest List
    Subject: [ntdev] launching a user-mode program


    In all the discussions I've been reading about communicating between kernel
    drivers and user-mode programs, the assumption has always been that the
    user-mode program is already running. I've got a situation where my driver
    monitors for a specific condition and when that condition occurs, needs to
    start a user-mode program to perform some actions. These actions do not
    require user input but they are too complex to be moved down into the
    driver. There is no communication between the driver and the user program
    once the program is running. It is NOT acceptable in my situation for the
    user-mode program to be running all the time and simply waiting for an
    event signal from the driver. I used the _shell_ShellExecute function in my
    Windows 95 version of this system, but I cannot find any equivalent in
    Windows NT. So ... how do I launch my user program once my driver detects
    its condition?

    Any and all suggestions on how to solve this problem are greatly
    appreciated.

    Judy Labovitz

    [email protected]

    ---
    You are currently subscribed to ntdev as: [email protected]
    To unsubscribe send a blank email to $subst('Email.Unsub')
  • OSR_Community_UserOSR_Community_User Member Posts: 110,217
    Judy,

    Walter Oney's WDM programming book, "Programming the Microsoft Windows
    Driver Model" (Microsoft Press), has an example of this in Chapter 12. Look
    for the stuff about "AutoLaunch". It illustrates how to accomplish this
    task from a WDM driver on Windows 2000 and Windows 98 (although I suppose
    there's no reason why a WDM driver running on 98 can't just call the
    SHELL_ShellExecute() service).

    If you don't have or don't want to buy Walter's book, you might also search
    around on the Internet for a copy of his white paper, "Launching a
    Device-Specific Application", which was the basis for the book's AutoLaunch
    stuff. Walter no longer makes the old paper available on his Website since
    he of course would like you to buy his book now instead.


    Regards,

    Matt Arnold
    Professional Music Products
    Mark of the Unicorn, Inc.
    http://www.motu.com


    From: <[email protected]>
    Sent: Wednesday, March 15, 2000 12:21 PM

    [snip]

    > I used the _shell_ShellExecute function in my
    > Windows 95 version of this system, but I cannot find any equivalent in
    > Windows NT. So ... how do I launch my user program once my driver detects
    > its condition?
    >
    > Any and all suggestions on how to solve this problem are greatly
    > appreciated.

    [snip]
  • OSR_Community_UserOSR_Community_User Member Posts: 110,217
    > Windows NT. So ... how do I launch my user program once my driver detects
    > its condition?

    Use an auxiliary service to do this - the simplest way.

    Max
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

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!
Kernel Debugging 30 January 2023 Live, Online
Developing Minifilters 20 March 2023 Live, Online
Internals & Software Drivers 17 April 2023 Live, Online
Writing WDF Drivers 22 May 2023 Live, Online