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/


Handle interrupt in WDF

zviveredzvivered Member Posts: 53

Hello,

Long time ago I learned here to handle driver interrupts using the following concept:

  1. Application sends IOCTL request to the driver. This request is blocked with timeout.
  2. This request is forwarded to "internal" queue.
  3. Upon interrupt, the DPC handler reads from the "internal" queue and calls WdfRequestCompleteWithInformation
  4. At this point the application is not blocked anymore.

Can you please explain:
If another interrupt occurs after step 3 and before application is blocked again, how can I make sure not to miss an interrupt ?

Thank you,
Zvika

Comments

  • Tim_RobertsTim_Roberts Member - All Emails Posts: 13,403

    Well, that's not really the right question. Your driver won't miss an interrupt. If you want your application to catch all the notifications in real time, then you need to queue up several requests, using FILE_FLAG_OVERLAPPED. Easy.

    Tim Roberts, [email protected]
    Providenza & Boekelheide, Inc.

  • zviveredzvivered Member Posts: 53

    Hi Tim,

    Do you mean FILE_FLAG_OVERLAPPED in the application's file that sends IOCTLs ?

    Thank you,
    Zvika

  • Peter_Viscarola_(OSR)Peter_Viscarola_(OSR) Administrator Posts: 7,805

    Yes. That’s what he means.

    It’s trickier than Mr. Roberts is making it sound, though. While he’s (of course) correct that your driver won’t miss an interrupt, you must be aware of the fact that two calls to WdfInterruptQueueDpcForIsr can result in a single callback to that DpcForIsr.

    Have I mentioned before that you really need to take a seminar on writing WDF drivers? It’s just so hard to explain this stuff one isolated post at a time.

    Peter

    Peter Viscarola
    OSR
    @OSRDrivers

Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

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 Mar 2020 OSR Seminar Space
Developing Minifilters 15 Jun 2020 LIVE ONLINE
Writing WDF Drivers 22 June 2020 LIVE ONLINE
Internals & Software Drivers 28 Sept 2020 Dulles, VA