Debugging Tools for Windows
!exqueue
The !exqueue extension displays a list of items currently queued in the ExWorkerQueue work queues.
Syntax
!exqueue [Flags]
Parameters
- Flags
- Can be any combination of the following values. The default is 0x0, which will display only a limited amount of information.
| Bit 0 (0x1) | Adds time and priority statistics to the display, unless 0x2 is also set. |
| Bit 1 (0x2) | Adds to the display a list of threads and events associated with the work queue and their wait states. |
| Bit 2 (0x4) | Adds to the display a list of threads associated with the work queue. If ussed without 0x2, each thread is displayed on a single line. If used with 0x2, each thread is displayed with a stack trace. |
| Bit 3 (0x8) | (Windows XP and later) Adds the return address, the stack pointer, and (on Itanium systems) the bsp register value to the display of each thread in the queue. The display of function arguments is suppressed. |
| Bit 4 (0x10) | Displays only the critical work queue. |
| Bit 5 (0x20) | Displays only the delayed work queue. |
| Bit 6 (0x40) | Displays only the hypercritical work queue. |
DLL
| Windows 2000 | Kdextx86.dll |
| Windows XP and later | Kdexts.dll |
Comments
If Flags does not include bits 4, 5, or 6, the display includes the critical work queue, the delayed work queue, and the hypercritical work queue.
Here is an sample of the output from this extension:
kd> !exqueue
Dumping ExWorkerQueue: 8046A5C0
**** Critical WorkQueue( current = 0 maximum = 1 )
THREAD fe502940 Cid 8.c Teb: 00000000 Win32Thread: 00000000 WAIT
THREAD fe5026c0 Cid 8.10 Teb: 00000000 Win32Thread: 00000000 WAIT
THREAD fe502440 Cid 8.14 Teb: 00000000 Win32Thread: 00000000 WAIT
THREAD fe5021c0 Cid 8.18 Teb: 00000000 Win32Thread: 00000000 WAIT
THREAD fe501020 Cid 8.1c Teb: 00000000 Win32Thread: 00000000 WAIT
**** Delayed WorkQueue( current = 0 maximum = 1 )
THREAD fe501da0 Cid 8.20 Teb: 00000000 Win32Thread: 00000000 WAIT
THREAD fe501b20 Cid 8.24 Teb: 00000000 Win32Thread: 00000000 WAIT
THREAD fe5018a0 Cid 8.28 Teb: 00000000 Win32Thread: 00000000 WAIT
**** HyperCritical WorkQueue( current = 0 maximum = 1 )
THREAD fe501620 Cid 8.2c Teb: 00000000 Win32Thread: 00000000 WAIT
The important information in the !exqueue display is:
| Parameter | Meaning |
| current | The number of running threads in the queue; that is, the number of threads in the queue that are not in a wait state. |
| maximum | The number of running threads allowed in the queue at any given point in time. This is usually based on the number of processors in the system. |
The system will execute work items in any queue in which the current value is less than its maximum value. The system will not execute any new work items in a queue in which the current value is greater than or equal to its maximum value until the excess queue threads have either completed execution or entered a wait state. This rule can delay the system when a CPU-intensive work item is being executed without entering a wait state, because it prevents new work items from being executed, even though the queue seems to have free threads.
Additional Information
For information about worker threads, see Microsoft Windows Internals by Mark Russinovich and David Solomon.