KeRemoveQueueEntry
UINT8 __stdcall KeRemoveQueueEntry(_KQUEUE *Queue, _LIST_ENTRY *Entry){
UINT8 v4;
unsigned __int8 CurrentIrql;
_LIST_ENTRY *Flink;
_LIST_ENTRY *Blink;
v4 = 0;
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
KiAcquireKobjectLockSafe(Queue);
if( Entry->Flink )
{
--Queue->Header.SignalState;
Flink = Entry->Flink;
Blink = Entry->Blink;
if( Entry->Flink->Blink != Entry || Blink->Flink != Entry )
__fastfail(3u);
Blink->Flink = Flink;
v4 = 1;
Flink->Blink = Blink;
}
_InterlockedAnd(&Queue->Header.Lock, 0xFFFFFF7F);
__writecr8(CurrentIrql);
return v4;
}Referenced by:
IopCancelWaitCompletionPacket