PipDmgFlushQueueAndRestartDevices
PVOID *__fastcall PipDmgFlushQueueAndRestartDevices(){
PVOID *v0;
PVOID v1;
PVOID *result;
_QWORD *v3;
PVOID P[2];
if( !PipDmaGuardPolicy || PipDmaGuardPolicy == 3 )
KeBugCheckEx(0xCAu, 0x11ui64, 0i64, 0i64, 0i64);
P[1] = P;
P[0] = P;
PiDmaGuardQueueFlush((INT64)P);
v0 = (PVOID *)P[0];
if( P[0] == P )
goto LABEL_6;
do
{
v1 = v0[2];
v0 = (PVOID *)*v0;
PipDmgRequestRestartOnBlockedDevice(v1);
}
while( v0 != P );
while( 1 )
{
v0 = (PVOID *)P[0];
LABEL_6:
result = P;
if( v0 == P )
break;
if( v0[1] != P || (v3 = *v0, *((PVOID **)*v0 + 1) != v0) )
__fastfail(3u);
P[0] = *v0;
v3[1] = P;
PipDgqFreeEntry(v0);
}
return result;
}Referenced by:
PipDmgConsoleUnlockCallback
PipDmgReevaluateQueue