···13471347// This routine must be entered with the PRCB lock held and it will exit
13481348// with the PRCB lock released!
13491349//
13501350+_Requires_lock_held_(Prcb->PrcbLock)
13511351+_Releases_lock_(Prcb->PrcbLock)
13501352FORCEINLINE
13511353VOID
13521354KxQueueReadyThread(IN PKTHREAD Thread,
+4
ntoskrnl/ke/amd64/stubs.c
···2626KiConvertToGuiThread(
2727 VOID);
28282929+_Requires_lock_not_held_(Prcb->PrcbLock)
2930VOID
3031NTAPI
3132KiDpcInterruptHandler(VOID)
···6162 }
6263 else if (Prcb->NextThread)
6364 {
6565+ /* Acquire the PRCB lock */
6666+ KiAcquirePrcbLock(Prcb);
6767+6468 /* Capture current thread data */
6569 OldThread = Prcb->CurrentThread;
6670 NewThread = Prcb->NextThread;
···367367 /* Lock the process */
368368 KiAcquireProcessLockRaiseToSynch(Process, &ProcessLock);
369369370370+ /* Acquire the dispatcher lock */
371371+ KiAcquireDispatcherLockAtSynchLevel();
372372+370373 /* Check if we are modifying the quantum too */
371374 if (Quantum) Process->QuantumReset = Quantum;
372375