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/
So lets say i have set up a cleanup callback for my context in order to free up some buffers (such as filenames allocated via FltGetFileNameInformation)
Based on what i read, FLT_STREAM_CONTEXT is unique per file, so this is my assumption:
FLT_STREAMHANDLE_CONTEXT cleanup callback gets called when every handle on the file gets closed and references to its file object get dereferenced.
FLT_STREAM_CONTEXT cleanup callback gets called when the handle on the file gets closed.
So is this true? And what happens when i use FltAllocateContext, on the post create of a file that was opened previously by the same or another process? Does this return me the first allocated buffer, or a new buffer?
I am trying to optimize my code, as i am using FltGetFileNameInformation in post create to store the filename in the context, but this seems to be causing problem in case that in a system there are a lot of open handles that are not getting closed (high memory usage as i am using NonPagePool to allocateContext, and the paged tag 'FMfn' gets extremely large, more than 220 MB, and this tag is for FltMgr for file names), so i thought maybe by switching to FLT_STREAM_CONTEXT it could reduce this problem a bit.
|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!|
|Writing WDF Drivers||24 January 2022||Live, Online|
|Internals & Software Drivers||7 February 2022||Live, Online|
|Kernel Debugging||21 March 2022||Live, Online|
|Developing Minifilters||23 May 2022||Live, Online|