Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results
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/
Hi everyone. The Filter Manager does a good job of making fast I/O calls look like IRPs. With that in mind I've got some nuance questions I can't find answered anywhere:
If the minfilter does NOT reply with FLT_PREOP_DISALLOW_FASTIO to IRP_MJ_CREATE (thus allowing the fast I/O calls for that file I/O?), but then after zero or more IRP_MJ_READ calls determines it can't handle an IRP_MJ_READ (perhaps it needs to pend the operation), can it return FLT_PREOP_DISALLOW_FASTIO at that point (in the PreOp)?
What is different in IRP_MJ_READ between an IRP-based and fast I/O based request? (I assume differences will be similar for IRP_MJ_WRITE?) Does it boil down to IRQL or buffer management?
Thanks for any help, I appreciate it.
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 | 16-20 October 2023 | Live, Online |
Developing Minifilters | 13-17 November 2023 | Live, Online |
Internals & Software Drivers | 4-8 Dec 2023 | Live, Online |
Writing WDF Drivers | 10-14 July 2023 | Live, Online |
Comments
Hmmmm... pretty much what Mr. Widdowson said so very succinctly.
Fast I/O is just an "express processing" callback that asks the file system "Can you completely handle this request right now, or do you want me to build you an IRP so you can handle this at your convenience?"
For just a bit more detail, from the ancient, and classic, article on OSR Online that first explained Fast I/O to the world (this was 1996!):
Peter Viscarola
OSR
@OSRDrivers
Note that returning FLT_PREOP_DISALLOW_FASTIO to IRP_MJ_CREATE does not disable Fast I/O processing for that File Object. This return value is only usable when FLT_IS_FASTIO_OPERATION returns TRUE and results in the specific operation being retried as an IRP.
-scott
OSR
Thanks @Scott_Noone_(OSR) - that's exactly the info I was looking for on that one.