KeAcquireInStackQueuedSpinLockForDpc
VOID __stdcall KeAcquireInStackQueuedSpinLockForDpc(UINT64 *SpinLock, _KLOCK_QUEUE_HANDLE *LockHandle){
WORK_QUEUE_TYPE v2;
v2 = *((_DWORD *)KeGetCurrentPrcb() + 3147);
if( (v2 & 0x10000) != 0 )
{
KeAcquireInStackQueuedSpinLock(SpinLock, LockHandle);
}
else
{
LockHandle->LockQueue.Next = 0i64;
LockHandle->LockQueue.Lock = SpinLock;
KxAcquireQueuedSpinLock((PIO_WORKITEM)LockHandle, (PIO_WORKITEM_ROUTINE)SpinLock, v2, LockHandle);
}
}Referenced by:
KeInsertByKeyDeviceQueue
KeInsertDeviceQueue
KeRemoveByKeyDeviceQueue
KeRemoveByKeyDeviceQueueIfBusy
KeRemoveDeviceQueue