KeReleaseQueuedSpinLock
void __stdcall KeReleaseQueuedSpinLock(KSPIN_LOCK_QUEUE_NUMBER Number, KIRQL OldIrql){
_KSPIN_LOCK_QUEUE *v2;
unsigned __int64 v3;
_KSPIN_LOCK_QUEUE *Next;
v2 = (_KSPIN_LOCK_QUEUE *)(16 * Number + *((_QWORD *)KeGetPcr() + 5));
v3 = OldIrql;
_m_prefetchw(v2);
Next = v2->Next;
if( v2->Next )
goto LABEL_5;
if( v2 != (_KSPIN_LOCK_QUEUE *)_InterlockedCompareExchange64(
(volatile signed __int64 *)v2->Lock,
0i64,
(signed __int64)v2) )
{
Next = KxWaitForLockChainValid(v2);
LABEL_5:
v2->Next = 0i64;
_InterlockedXor64((volatile signed __int64 *)&Next->Lock, 1ui64);
}
__writecr8(v3);
}Referenced by:
CcAllocateInitializeVacbArray
CcDereferenceVacbArray
CcExtendVacbArray
CcGetRandomVacbArrayWithReference
CcGetVacbMiss
CcGetVirtualAddress
CcInitializePartitionVacbs
CcUninitializePartitionVacbs
CcUnmapInactiveViewsInternal
CcUnmapVacbArray
FsRtlCancelNotify
FsRtlNotifySetCancelRoutine
FsRtlPrivateCancelFileLockIrp
FsRtlPrivateCheckWaitingLocks
FsRtlPrivateFastUnlockAll
FsRtlUninitializeFileLock
FsRtlUninitializeOplock
FsRtlpAcknowledgeOplockBreak
FsRtlpAcknowledgeOplockBreakByCacheFlags
FsRtlpCancelExclusiveIrp
FsRtlpCancelOplockRHIrp
FsRtlpCancelReadOnlyOplockIrp
FsRtlpCancelWaitingIrp
FsRtlpGrantAnyOplockFromExclusive
FsRtlpOplockBreakByCacheFlags
FsRtlpOplockBreakToII
FsRtlpOplockBreakToNone
FsRtlpOplockCleanup
FsRtlpRemoveAndBreakRHIrp
FsRtlpRemoveAndCompleteReadOnlyIrp
FsRtlpRemoveAndCompleteWaitingIrp
FsRtlpRequestExclusiveOplock
FsRtlpRequestShareableOplock
FsRtlpWaitOnIrp
IoAdjustStackSizeForRedirection
IoAllocateDriverObjectExtension
IoBoostThreadIoPriority
IoCancelIrp
IoDeleteDevice
IoDetachDevice
IoEnumerateDeviceObjectList
IoGetAttachedDeviceReferenceWithTag
IoGetDeviceAttachmentBaseRefWithTag
IoGetDiskDeviceObject
IoGetDriverObjectExtension
IoGetLowerDeviceObjectWithTag
IoReleaseVpbSpinLock
IoStartPacket
IoUnregisterShutdownNotification
IopAttachDeviceToDeviceStackSafe
IopCheckStackForTransactionSupport
IopCheckUnloadDriver
IopCheckVpbMounted
IopCompleteUnloadOrDelete
IopCsqCancelRoutine
IopDisassociateThreadIrp
IopEliminateBogusConflict
IopGetDevicePDO
IopGetDriverPathInformation
IopGetFsRegistrationInProgress
IopInsertRemoveDevice
IopInterlockedDecrementUlong
IopInterlockedIncrementUlong
IopInterlockedRemoveHeadList
IopMountInitializeVpb
IopQueryVpbFlagsSafe
IopReferenceVerifyVpb
IopResurrectDriver
IopSetFsRegistrationInProgress
IopSetLegacyResourcesFlag
IopStartNextPacket
IopStartNextPacketByKey
IopVerifyDeviceObjectOnStack
IopfCompleteRequest
IovUtilGetBottomDeviceObjectWithTag
IovUtilGetLowerDeviceObjectWithTag
IovUtilGetUpperDeviceObjectWithTag
IovUtilIsInFdoStack
IovUtilIsVerifiedDeviceStack
IovUtilMultipleDevicesSameDriver
IovUtilRelateDeviceObjects
PiDqIrpCancel
PiSwIrpCancelStartCreate
PnpFindMountableDevice
PnpGetRelatedTargetDevice
PnpHandleEnumerateHandlesAgainstPdoStack
PnpIsChainDereferenced
PnpLockMountableDevice
PnpMarkDeviceForRemove
PnpRemoveLockedDeviceNode
PnpUnlockMountableDevice
PopQueueQuerySetIrp
PpMarkDeviceStackExtensionFlag
RawCheckForDeleteVolume
RawVerifyVolume
WmipNotificationIrpCancel