PopBatteryRemove
void __fastcall __noreturn PopBatteryRemove(_POP_POLICY_DEVICE *PolicyDevice){
void *v1;
void *v2;
void *v3;
_POP_POLICY_DEVICE *v5;
_LIST_ENTRY *Flink;
_LIST_ENTRY *Blink;
IoCancelIrp((KDPC *)PolicyDevice->Irp, v1, v2, v3);
KeWaitForSingleObject(&PolicyDevice[1].DeviceType, Executive, 0, 0, 0i64);
PopAcquireRwLockExclusive((_POP_RW_LOCK *)&PopCB);
v5 = PolicyDevice + 1;
Flink = v5->Link.Flink;
if( v5->Link.Flink )
{
if( (_POP_POLICY_DEVICE *)Flink->Blink != v5 || (Blink = v5->Link.Blink, (_POP_POLICY_DEVICE *)Blink->Flink != v5) )
__fastfail(3u);
Blink->Flink = Flink;
Flink->Blink = Blink;
v5->Link.Flink = 0i64;
LODWORD(dword_140C23534) = dword_140C23534 - 1;
++dword_140C23598;
byte_140C23538 = 1;
PopBatteryQueueWork(3i64);
}
PopBatteryQueueWork(8i64);
PopReleaseRwLock((UINT64)&PopCB);
if( !--dword_140C23530 )
{
PopAcquirePolicyLock();
if( byte_140C23E5E )
{
byte_140C23E5E = 0;
PopResetCurrentPolicies();
}
PopReleasePolicyLock();
}
}Referenced by:
No references.