How Do I Get A Kernel driver Signal a thread?

I have a driver that acquires data. Currently, the user reads/writes from/to
this driver at will. Some users have requested some sort of notification or
signaling. I want to ty two approches and would like suggestions on
approches and kernel calls to use. The kernel driver is for Windows NT 4.0
and Windows 2000.

  1. I want to create some sort of object in the kernel driver that the
    calling user thread can block on till the data/event occurs.
  2. Alternatively, I would like to have the ability to call a user function
    in user mode from the kernel driver.
  3. How would I handle cleanup if the user mode application is aborted

Thanks for your help.

WCSC(Willies Computer Software Co)
Tel: (281)360-4232 Fax: (281)360-3231