Some assert for safe IQRL raised in my codes. I noticed most of the Fltxxxx() functions need <= APC level. But I do need to call some basic functions like FltGetStreamHandleContext in both pre and post operation callbacks. Since the callbacks could be running in DPC level, I have no idea how to implement the function in safe. Do you have some comments?
I also noticed the FltAllocateContext() has a option to allocate from non-paged pool. If I use this option, probably it will be safer in DPC situation?
>Since the callbacks could be running in DPC level
Only postoperation callbacks( due to IRP completion at DISPATCH_LEVEL ),
look at the code of any FSD in WDK - all dispatch functions are pageable(
except the page file IO path ), they can’t be called at DISPATCH_LEVEL, for
postoperation callbacks use FltDoCompletionProcessingWhenSafe
–
Slava Imameyev, xxxxx@hotmail.com
wrote in message news:xxxxx@ntfsd…
> Some assert for safe IQRL raised in my codes. I noticed most of the
> Fltxxxx() functions need <= APC level. But I do need to call some basic
> functions like FltGetStreamHandleContext in both pre and post operation
> callbacks. Since the callbacks could be running in DPC level, I have no
> idea how to implement the function in safe. Do you have some comments?
>
> I also noticed the FltAllocateContext() has a option to allocate from
> non-paged pool. If I use this option, probably it will be safer in DPC
> situation?
>