Today I read the source code of WDDK 7600.1(swapBuffers.c) and found something strange.
In SwapPreReadBuffers(…) it calls IoAllocateMdl and MmBuildMdlForNonPagedPool to build a MDL, but in SwapPostReadBuffers(…) and SwapPostReadBuffersWhenSafe(…) it doesn’t calls IoFreeMdl to free the MDL it allocated.
I think it should free the MDL it allocated by calling IoFreeMdl, isn’t it?
u don’t need to do that, the filter manager will free the MDL unless u call FltRetainSwappedBufferMdlAddress!
Thanks for your response, I get it