IopQueueThreadIrp

VOID __stdcall IopQueueThreadIrp(_IRP *Irp){
  _ETHREAD *Thread; 
  _LIST_ENTRY *p_ThreadListEntry; 
  _LIST_ENTRY *p_IrpList; 
  UINT64 *p_IrpListLock; 
  unsigned __int8 CurrentIrql; 
  _LIST_ENTRY *Flink; 

  Thread = Irp->Tail.Thread;
  p_ThreadListEntry = &Irp->ThreadListEntry;
  p_IrpList = &Thread->IrpList;
  p_IrpListLock = &Thread->IrpListLock;
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  if( _interlockedbittestandset64((volatile signed __int32 *)p_IrpListLock, 0i64) )
    KxWaitForSpinLockAndAcquire(p_IrpListLock);
  Flink = p_IrpList->Flink;
  if( p_IrpList->Flink->Blink != p_IrpList )
    __fastfail(3u);
  p_ThreadListEntry->Flink = Flink;
  p_ThreadListEntry->Blink = p_IrpList;
  Flink->Blink = p_ThreadListEntry;
  p_IrpList->Flink = p_ThreadListEntry;
  _InterlockedAnd64((volatile signed __int64 *)p_IrpListLock, 0i64);
  __writecr8(CurrentIrql);
}

Referenced by:

IoAsynchronousPageWrite
IoCancelFileOpen
IoEnqueueIrp
IoQueueThreadIrp
IoSetInformation
IoSynchronousPageWriteEx
IoVerifyVolume
IopBuildSynchronousFsdRequest
IopCloseFile
IopDeleteFile
IopFilterResourceRequirementsCall
IopFreeBandwidthContract
IopGetFileInformation
IopGetSetSecurityObject
IopParseDevice
IopQueryXxxInformation
IopSynchronousCall
IopSynchronousServiceTail
NtQueryInformationFile
NtSetInformationFile