KiWakePriQueueWaiter
UINT8 __stdcall KiWakePriQueueWaiter(_KPRCB *Prcb, _KPRIQUEUE *Queue, INT64 Entry, INT64 Priority){
_KWAIT_BLOCK *v4;
unsigned int v5;
_KWAIT_BLOCK *v6;
_LIST_ENTRY *Flink;
_KWAIT_BLOCK *v10;
_LIST_ENTRY *Blink;
UINT8 result;
v4 = (_KWAIT_BLOCK *)((char *)Queue + 8);
v5 = Priority;
v6 = (_KWAIT_BLOCK *)*((_QWORD *)Queue + 1);
do
{
Flink = v6->WaitListEntry.Flink;
v10 = v6;
v6 = (_KWAIT_BLOCK *)Flink;
if( (_KWAIT_BLOCK *)Flink->Blink != v10 || (Blink = v10->WaitListEntry.Blink, (_KWAIT_BLOCK *)Blink->Flink != v10) )
__fastfail(3u);
Blink->Flink = Flink;
Flink->Blink = Blink;
result = KiTryUnwaitThreadWithPriority(Prcb, v10, Entry, v5);
}
while( !result && v6 != v4 );
return result;
}Referenced by:
KeInsertPriQueue
KiActivateWaiterPriQueue