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/
I am writing an UMDF2 driver which accesses some legacy PCI board.
Besides reading and writing PCI bar memory this driver needs to handle occasional interrupts from the board.
For compatibility reasons the application needs to be notified about incoming interrupts knowing that these should be processed transparrently by the driver in an ideal worls.
Would it be possible to
* initialize the default queue with WdfIoQueueDispatchParallel
* Introduce an IOCTL WAIT_FOR_INTERRUPT
// Store request in the device context so it can be completed later
// Do noting to mark request as pending, complete the request in the DPC of the interrupt
and then have the application open a thread which issues a blocking IoControl with WAIT_FOR_INTERRUPT which only returns if the request is completed from the DPC routine handling the interrupt.
My question is:
If another thread of the application calls an IOControl request with e.g. READ_REGISTER, will this request be handled by the driver even though another request in the same queue is not completed? I have initialized the default queue as WdfIoQueueDispatchParallel, but does this mean that this request reaches the driver and can be completed emediatelly?
How does WdfIoQueueDispatchParallel relate to Overlapped IO?
Thank you and all the best!
Last Updated: 24 March 2021
These Rules and Guidelines are established for the overall good of the Community. We reserve the right to edit or change them at any time and without notice. For that reason, we recommend you stop by here frequently to check on the latest changes.
This Community and its forums is maintained by OSR Open Systems Resources, Inc. as a public service for the overall benefit of the professional Windows system software development community. The purpose of the Community is to facilitate communication among peers who design and develop Windows drivers, file systems, and file system Minifilters. The goal of the forum is to allow professional practicing engineers to assist each other with problems, issues, and policies. It's also intended as a place to have focused discussions regarding Windows OS architecture, driver development, file system and Minifilter development, and debugging issues.
The Community is specifically NOT for extended debates and discussions, and we tend not to appreciate answers that start with "In Linux, we do it this way" or "On Android, this would be easy."
We will be creating an FAQ for each of the lists. If you'd like to contribute a question or an answer, please feel free to post about it in the relevant category.
We are a respectful, inclusive, community. We, as a community, will not tolerate behavior that disrespects, harasses, abuses, shames, denigrates, mocks, or otherwise marginalizes any of our members. We will not accept trolling, insulting or derogatory comments, or personal or political attacks. We will also not accept rude, abusive, or offensive user names on this forum.
Incidents of inappropriate conduct on the list will result in that member, and perhaps all members from the offender's company, being permanently banned from the community.
The following are specifically inappropriate behaviors on these forums:
1. Commercial postings - This is a technical community, and the only posts that are allowed are technical in nature. Please don't post advertisements or announcements for your products, services, or activities to the forums. Your posting will NOT be considered technical (and thus legitimate), just because it starts with "I just wanted all you to know that we've released a new version of" some software. On the other hand, if somebody posts question saying "Can anybody recommend a good XYZ?", it's perfectly fine to answer "Yeah, we make XYZ's and we think they're pretty cool. Please contact me directly for more info."
2. Job solicitations - Not from commercial concerns looking for developers, not from head hunters, not from small companies, not from people looking for work, not from consultants looking for clients, not from consultants looking to offer their services to solve a specific problem.
3. Requests for, or offers of, or inquiries about paid consulting services - We consider these commercial postings, and are therefore not allowed. If you're interested in more information about hiring OSR or any other consultant on the forum to help with a problem, please email directly or visit the appropriate web site. If you're a consultant, and you're only willing to (further) help a poster on a paid basis, a good way to communicate this might be to say "What you're asking is beyond that scope of what I can help you with on a forum." Do not email them and offer your services (that would be a really major violation of the terms of this forum).
4. Salary, consulting rate or price discussions - Something about the laws here in the States about price fixing comes into play here. Please just don't do it.
5. Use of the email addresses or names of Community members for "direct mail advertising" or business solicitation of any type.
6. Asking about how to implement malware, or requesting help with techniques that are commonly used for the implementation of malware. The members here are not interested in helping with, and the forum will not support, the development of malware or anything that looks like or could be used as malware. This is true even when done under the premise of "this is for my personal learning." While we do not want to discourage questions from bona fide security researchers, it's often hard to distinguish between requests from legit defenders from those of black-hat offensive actors. Our policy is to err on the side of caution, and treat all such queries with suspicion. Sorry.
7. Anything that, in the judgment of the moderators, is not in keeping with the overall spirit and purpose of the Community or is not in the best interest of the Windows system software development community as a whole.
There are a number of other behaviors that are considered rules of "good conduct" for posting here on the forums. These include:
1. Read a bit before posting. This should help you get a "feel" for the forum, and how we tend to deal with different types of questions and responses here. It should also give you a feel for the character of some of our veteran members. Hopefully, these discoveries will be helpful as you eventually formulate and post your first questions.
2. Please do not revive "old" threads. Please not reply to threads where the last post is more than a month old. This is referred to as "necroposting." If you have a comment/question/issue that's raised in a "dead" thread, just start a new thread (you can post a link to the old thread if you want) and ask your question there.
3. Please post your question in the appropriate category: For example, file system filter questions should be posted to NTFSD; Other Windows driver questions should be posted to NTDEV.
4. Please do not post the same question in multiple categories. This is not allowed.
5. Please do the Community members the courtesy of searching the Internet and the list archives before you post a question.
6. Please post your questions/comments in English. We get that the majority of forum members are not necessarily native speakers of the English language. On the other hand, it is clear to us that the language most forum members share in common is English. If you struggle with English, try not to be too concerned -- The members will typically ask questions if your post is not sufficiently clear.
While we are first and foremost a community of working, professional, system software developers we absolutely welcome (and encourage, even!) questions from students, hobbyists, and those who wish to dabble in the field of Windows drivers. If you're a student, or if you're asking a question out of general curiosity or academic interest, we ask you to please say so in your post. Also, please don't ask us to do your homework for you. We mean that in both the literal sense (you shouldn't bring assignments from your professors here for us to solve for you) and also the more figurative sense (please do some independent research on your problem before asking us here).
Like any community, we have both written and unwritten rules of doing things here. We have a distinct character, flavor, and outlook. These things might not be obvious from simply reading these Rules and Guidelines. Therefore, our best advice to you for success in participating in the forum is to spend some time hanging out before posting. Read several threads. We're not saying you HAVE to do this... we're just suggesting that we have found over the many years that this forum has been active that this is conducive to getting the best answers to any questions that you may post.
The forums are all searchable from the web site, and can be searched by Google, using the "site:community.osr.com" qualifier. The community will be happiest if you search first, and ask questions after doing so.
You can post here in the Announcements and Administration section if you have questions about the Community. We'll be happy to hear from you. We think.