IopInterlockedRemoveHeadList
_LIST_ENTRY *__stdcall IopInterlockedRemoveHeadList(_LIST_ENTRY *ListHead){
INT64 v1;
INT64 v2;
UINT8 v4;
_LIST_ENTRY *Flink;
_LIST_ENTRY *v7;
_LIST_ENTRY *Blink;
v4 = KeAcquireQueuedSpinLock(10i64, v1, v2);
Flink = ListHead->Flink;
if( ListHead->Flink == ListHead )
{
Flink = 0i64;
}
else
{
v7 = Flink->Flink;
if( Flink->Flink->Blink != Flink || (Blink = Flink->Blink, Blink->Flink != Flink) )
__fastfail(3u);
Blink->Flink = v7;
v7->Blink = Blink;
}
KeReleaseQueuedSpinLock(LockQueueIoDatabaseLock, v4);
return Flink;
}Referenced by:
IoShutdownSystem
IopCallBootDriverReinitializationRoutines
IopCallDriverReinitializationRoutines