KiWakePriQueueWaiter
UINT8 __stdcall KiWakePriQueueWaiter(_KPRCB *Prcb, _KPRIQUEUE *Queue, INT64 Entry, INT64 Priority){
_LIST_ENTRY *p_WaitListHead;
int v5;
_LIST_ENTRY *Flink;
_LIST_ENTRY *v9;
__int64 v10;
_LIST_ENTRY *v11;
UINT8 result;
p_WaitListHead = &Queue->Header.WaitListHead;
v5 = Priority;
Flink = Queue->Header.WaitListHead.Flink;
do
{
v9 = Flink->Flink;
v10 = (__int64)Flink;
Flink = v9;
if( v9->Blink != (_LIST_ENTRY *)v10 || (v11 = *(_LIST_ENTRY **)(v10 + 8), v11->Flink != (_LIST_ENTRY *)v10) )
__fastfail(3u);
v11->Flink = v9;
v9->Blink = v11;
result = KiTryUnwaitThreadWithPriority((__int64)Prcb, v10, Entry, v5);
}
while( !result && Flink != p_WaitListHead );
return result;
}Referenced by:
KeInsertPriQueue
KiActivateWaiterPriQueue