KiInsertSecondarySignalList
VOID __stdcall KiInsertSecondarySignalList(_LIST_ENTRY *SignalList){
_LIST_ENTRY *v2;
bool v3;
UINT8 OldIrql;
OldIrql = 0;
if( SignalList->Flink != SignalList )
{
KiAcquireSecondarySignalListLock(&OldIrql);
v2 = (_LIST_ENTRY *)qword_140C2B268;
if( *(__int64 **)(KiSecondarySignalList + 8) != &KiSecondarySignalList
|| *(__int64 **)qword_140C2B268 != &KiSecondarySignalList
|| SignalList->Flink->Blink != SignalList
|| SignalList->Blink->Flink != SignalList )
{
__fastfail(3u);
}
*(_QWORD *)qword_140C2B268 = SignalList;
qword_140C2B268 = (__int64)SignalList->Blink;
SignalList->Blink->Flink = (_LIST_ENTRY *)&KiSecondarySignalList;
v3 = KiSecondarySignalDpcRunning == 0;
SignalList->Blink = v2;
if( v3 )
{
KiSecondarySignalDpcRunning = 1;
KiInsertQueueDpc(&KiSecondarySignalDpc, 0i64, 0i64, 0i64, 0);
}
KxReleaseSpinLock(&KiSecondarySignalListLock);
__writecr8(OldIrql);
}
}Referenced by:
KeDispatchSecondaryInterrupt