PopFxDestroyDripsBlockingDeviceList
VOID __stdcall PopFxDestroyDripsBlockingDeviceList(INT64 a1, INT64 rdx0, INT64 a3, INT64 a4, INT64 a5, INT64 a6){
__int64 *v7;
__int64 v8;
void *v9;
while( 1 )
{
v7 = *(__int64 **)a1;
if( *(_QWORD *)a1 == a1 )
break;
if( v7[1] != a1 || (v8 = *v7, *(__int64 **)(*v7 + 8) != v7) )
__fastfail(3u);
*(_QWORD *)a1 = v8;
*(_QWORD *)(v8 + 8) = a1;
v9 = (void *)v7[3];
if( v9 )
{
ExFreePoolWithTag(v9, 0x4D584650u);
v7[3] = 0i64;
*((_DWORD *)v7 + 8) = 0;
}
PopFxReleaseDevice((_POP_FX_DEVICE *)(v7 - 109));
}
ExReleasePushLockEx((ULONG_PTR)&stru_140C23628 + 3984, 0);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
IoLockUnlockPnpDeviceTree(0);
}Referenced by:
PopDripsWatchdogCallbackHandler
PopDripsWatchdogTakeAction
PopFxBuildDripsBlockingDeviceList