I am sending an IOCTL from the TDI filter to the protocol driver from
a workitem routine.
Foll are the steps:
1. Mdl = IoAllocateMdl (describes a non paged memory)
if(failed) goto Cleanup;
2. MmBuildMdlForNonPagedPool
3. NewIrp = TdiBuildInternalDeviceControlIrp
if(failed) goto Cleanup;
4. TdiBuildQueryInformation (Set the IRP's DeviceObj,FileObj,MDL)
5. IoCallDriver
Cleanup:
6. if(NewIrp) IoCompleteRequest
7. if(Mdl) IoFreeMdl
If there is a failure after step 4, the code will jump to step 6
(Cleanup).
In such cases, Win2k checked OS issues an assertion failure message
Assertion failed: (MemoryDescriptorList->MdlFlags & MDL_PAGES_LOCKED)
!= 0
This assertion is in the IoCompleteRequest code.
What is the problem?
-Mani