When I was writing a Minifilter driver, it was normal to process local files. However, if I needed to process remote shared files, an exception occurred and the system reported when the process ended.
DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS (cb)
Caused by a driver not cleaning up completely after an I/O.
When possible, the guilty driver's name (Unicode string) is printed on
the BugCheck screen and saved in KiBugCheckDriver.
Arguments:
Arg1: ffffac05f6fc1f00, The calling address in the driver that locked the pages or if the
IO manager locked the pages this points to the dispatch routine of
the top driver on the stack to which the IRP was sent.
Arg2: 0000000000000000, The caller of the calling address in the driver that locked the
pages. If the IO manager locked the pages this points to the device
object of the top driver on the stack to which the IRP was sent.
Arg3: ffffac05f612a4b0, A pointer to the MDL containing the locked pages.
Arg4: 0000000000000002, The number of locked pages.
PROCESS_NAME: wps.exe
STACK_TEXT:
ffffbc0ad6e91a58 fffff803
69334e12 : ffffbc0ad6e91bc0 fffff803
6919b470 0000000000000000 00000000
00000000 : nt!DbgBreakPointWithStatus
ffffbc0ad6e91a60 fffff803
693343f6 : 0000000000000003 ffffbc0a
d6e91bc0 fffff80369231ae0 00000000
000000cb : nt!KiBugCheckDebugBreak+0x12
ffffbc0ad6e91ac0 fffff803
69219bf7 : 0000000000060107 ffffbc0a
d6e921d8 ffffac05f39a0f10 00000000
00000000 : nt!KeBugCheck2+0x946
ffffbc0ad6e921d0 fffff803
6966ab84 : 00000000000000cb ffffac05
f6fc1f00 0000000000000000 ffffac05
f612a4b0 : nt!KeBugCheckEx+0x107
ffffbc0ad6e92210 fffff803
6953c2ef : ffffac05f309f300 ffffbc0a
d6e922d0 ffffac05f599f080 ffffac05
f309f748 : nt!MmDeleteProcessAddressSpace+0x12bd88
ffffbc0ad6e92260 fffff803
6944ad10 : ffffac05f309f2d0 ffffac05
f309f2d0 0000000000000000 ffffac05
ed6db0c0 : nt!PspProcessDelete+0x13f
ffffbc0ad6e922f0 fffff803
69059747 : 0000000000000000 00000000
00000000 ffffac05f309f738 ffffac05
f309f300 : nt!ObpRemoveObjectRoutine+0x80
ffffbc0ad6e92350 fffff803
6940cb7c : 0000000000000000 ffffac05
f3632568 ffffac05f3632568 ffffac05
f3632568 : nt!ObfDereferenceObjectWithTag+0xc7
ffffbc0ad6e92390 fffff803
6944ad10 : ffffac05f3632050 ffffac05
f3632050 ffffbc0ad6e92589 00000000
00000000 : nt!PspThreadDelete+0x33c
ffffbc0ad6e92400 fffff803
69059747 : 0000000000000000 00000000
00000000 ffffbc0ad6e92589 ffffac05
f3632080 : nt!ObpRemoveObjectRoutine+0x80
ffffbc0ad6e92460 fffff803
69450579 : ffffac05f3632050 ffff9c04
a5ae47e0 0000000000000000 ffff9c04
a5ae47d0 : nt!ObfDereferenceObjectWithTag+0xc7
ffffbc0ad6e924a0 fffff803
694f5795 : ffffac05f5fa8098 fffff803
69059a39 ffffac05f5fa8060 00000000
00000000 : nt!ObCloseHandleTableEntry+0x6c9
ffffbc0ad6e925e0 fffff803
6947bb6d : ffffac05f5fa8060 ffffac05
f599f080 ffffffffffffff01 ffffac05
f455c798 : nt!ExSweepHandleTable+0xd5
ffffbc0ad6e92690 fffff803
695313b0 : ffffffffffffffff ffffac05
f455c340 ffffbc0ad6e926e0 fffff803
6953bb64 : nt!ObKillProcess+0x35
ffffbc0ad6e926c0 fffff803
6949c5ae : ffffac05f455c340 ffff9c04
a2f256b0 ffffbc0ad6e928e9 00000000
00000000 : nt!PspRundownSingleProcess+0x204
ffffbc0ad6e92750 fffff803
6950fb38 : 0000000000000000 00000000
00000001 0000000000000000 00000000
004b4000 : nt!PspExitThread+0x5f6
ffffbc0ad6e92850 fffff803
690e3e7d : 0000000000000000 00000000
00000000 0000000000000000 00000000
00000000 : nt!KiSchedulerApcTerminate+0x38
ffffbc0ad6e92890 fffff803
6921f190 : 0000000000000000 ffffbc0a
d6e92950 ffffbc0ad6e92b00 00000000
00000000 : nt!KiDeliverApc+0x60d
ffffbc0ad6e92950 fffff803
6922dbaf : 0000000000000000 00000000
00000000 0000000000000000 00000000
004b4000 : nt!KiInitiateUserApc+0x70
ffffbc0ad6e92a90 00007ffe
22a09044 : 00007ffe229f4cb0 00000000
03dddbd4 00007ffe229f35b1 00000000
00000001 : nt!KiSystemServiceExit+0x9f
0000000003a7e1f8 00007ffe
229f4cb0 : 0000000003dddbd4 00007ffe
229f35b1 0000000000000001 00000000
00000000 : wow64win!NtUserMsgWaitForMultipleObjectsEx+0x14
0000000003a7e200 00007ffe
220e90da : 00000000004b4000 00007ffe
229f4c20 00000000004b6000 00000000
00000000 : wow64win!whNtUserMsgWaitForMultipleObjectsEx+0x90
0000000003a7e260 00000000
775817c3 : 0000002375aa586c 00000000
00000023 0000000000000006 00000000
03dddb60 : wow64!Wow64SystemServiceEx+0x15a
0000000003a7eb20 00000000
775811b9 : 0000000003ddf704 00007ffe
220e3a74 0000000000000000 00007ffe
220e3b6f : wow64cpu!ServiceNoTurbo+0xb
0000000003a7ebd0 00007ffe
220e3989 : 00000000032cee78 00000000
00000000 0000000000000000 00000000
03a7f010 : wow64cpu!BTCpuSimulate+0x9
0000000003a7ec10 00007ffe
220e337d : 0000000000000000 00000000
00000001 0000000000000000 00000000
00000000 : wow64!RunCpuSimulation+0xd
0000000003a7ec40 00007ffe
24125059 : 0000000000000000 00000000
00000000 0000000000000001 00000000
00000000 : wow64!Wow64LdrpInitialize+0x12d
0000000003a7eef0 00007ffe
24124c43 : 0000000000000000 00007ffe
240b0000 0000000000000000 00000000
004b4000 : ntdll!LdrpInitialize+0x3fd
0000000003a7ef90 00007ffe
24124bee : 0000000003a7f010 00000000
003f0b8d 0000000000000000 00000000
00000000 : ntdll!LdrpInitialize+0x3b
0000000003a7efc0 00007ffe
240b0000 : 0000000000000000 00000000
00000000 0000000000000000 00000000
00000000 : ntdll!LdrInitializeThunk+0xe
0000000003a7eff0 00000000
00000000 : 0000000000000000 00000000
00000000 0000000000000000 00000000
00000000 : ntdll!RtlLargeIntegerToChar (ntdll+0x0)
I searched for the relevant irp based on the ffffac05f612a4b0 mdl information prompted by the system, but there was no result. I used !irpfind directly and found no relevant information.
I searched previous documents and got some information. When minifilter processes local files and remote files, there is a big difference in caching and oplock. Can you provide me with some information?
thanks!