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