windows线程切换之一个线程的Quantum: -93都是在处理KDPC----线程切换和KDPC没有关系
1: kd> g
Breakpoint 16 hit
eax=ffdff000 ebx=895f2a78 ecx=00000002 edx=000013ea esi=00002707 edi=e73f7530
eip=804ee4f8 esp=f789e820 ebp=f789e838 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
hal!HalRequestSoftwareInterrupt:
804ee4f8 643a0d95000000 cmp cl,byte ptr fs:[95h] fs:0030:00000095=00
0: kd> x nt!*tickcount
80b16f80 nt!KeTickCount = struct _KSYSTEM_TIME
80b16f80 nt!_KeTickCount = 0x105ee872
80a30bac nt!KeQueryTickCount (union _LARGE_INTEGER *)
80afc19a nt!_KiGetTickCount (void)
0: kd> dx -id 0,0,8954e020 -r1 ((ntkrnlmp!_KPRCB *)0xffdff120)
((ntkrnlmp!_KPRCB *)0xffdff120) : 0xffdff120 [Type: _KPRCB *]
[+0x000] MinorVersion : 0x1 [Type: unsigned short]
[+0x002] MajorVersion : 0x1 [Type: unsigned short]
[+0x004] CurrentThread : 0x895f2a78 [Type: _KTHREAD *]
[+0x008] NextThread : 0x89555268 [Type: _KTHREAD *]
[+0x928] ReadySummary : 0x1000 [Type: unsigned long]
0: kd> dx -id 0,0,8954e020 -r1 ((ntkrnlmp!_KTHREAD *)0x895f2a78)
((ntkrnlmp!_KTHREAD *)0x895f2a78) : 0x895f2a78 [Type: _KTHREAD *]
[+0x000] Header [Type: _DISPATCHER_HEADER]
[+0x010] MutantListHead [Type: _LIST_ENTRY]
[+0x018] InitialStack : 0xba1b1000 [Type: void *]
[+0x01c] StackLimit : 0xba1ad000 [Type: void *]
[+0x020] KernelStack : 0xba1b0c5c [Type: void *]
[+0x024] ThreadLock : 0x0 [Type: unsigned long]
[+0x028] ContextSwitches : 0x470 [Type: unsigned long]
[+0x02c] State : 0x2 [Type: unsigned char]
[+0x02d] NpxState : 0xa [Type: unsigned char]
[+0x02e] WaitIrql : 0x0 [Type: unsigned char]
[+0x02f] WaitMode : 1 [Type: char]
[+0x030] Teb : 0x7ffd5000 [Type: void *]
[+0x034] ApcState [Type: _KAPC_STATE]
[+0x04c] ApcQueueLock : 0x0 [Type: unsigned long]
[+0x050] WaitStatus : 258 [Type: long]
[+0x054] WaitBlockList : 0x895f2b18 [Type: _KWAIT_BLOCK *]
[+0x058] Alertable : 0x0 [Type: unsigned char]
[+0x059] WaitNext : 0x0 [Type: unsigned char]
[+0x05a] WaitReason : 0x6 [Type: unsigned char]
[+0x05b] Priority : 13 '\r' [Type: char]
[+0x05c] EnableStackSwap : 0x1 [Type: unsigned char]
[+0x05d] SwapBusy : 0x0 [Type: unsigned char]
[+0x05e] Alerted [Type: unsigned char [2]]
[+0x060] WaitListEntry [Type: _LIST_ENTRY]
[+0x060] SwapListEntry [Type: _SINGLE_LIST_ENTRY]
[+0x068] Queue : 0x0 [Type: _KQUEUE *]
[+0x06c] WaitTime : 0x105ee7d7 [Type: unsigned long]
[+0x070] KernelApcDisable : 0 [Type: short]
[+0x072] SpecialApcDisable : 0 [Type: short]
[+0x070] CombinedApcDisable : 0x0 [Type: unsigned long]
[+0x078] Timer [Type: _KTIMER]
[+0x0a0] WaitBlock [Type: _KWAIT_BLOCK [4]]
[+0x100] QueueListEntry [Type: _LIST_ENTRY]
[+0x108] ApcStateIndex : 0x0 [Type: unsigned char]
[+0x109] ApcQueueable : 0x1 [Type: unsigned char]
[+0x10a] Preempted : 0x1 [Type: unsigned char]
[+0x10b] ProcessReadyQueue : 0x0 [Type: unsigned char]
[+0x10c] KernelStackResident : 0x1 [Type: unsigned char]
[+0x10d] Saturation : 0 [Type: char]
[+0x10e] IdealProcessor : 0x0 [Type: unsigned char]
[+0x10f] NextProcessor : 0x0 [Type: unsigned char]
[+0x110] BasePriority : 13 '\r' [Type: char]
[+0x111] Spare4 : 0x0 [Type: unsigned char]
[+0x112] PriorityDecrement : 0 [Type: char]
[+0x113] Quantum : -93 [Type: char]
[+0x114] SystemAffinityActive : 0x0 [Type: unsigned char]
[+0x115] PreviousMode : 1 [Type: char]
[+0x116] ResourceIndex : 0x1 [Type: unsigned char]
[+0x117] DisableBoost : 0x0 [Type: unsigned char]
[+0x118] UserAffinity : 0x3 [Type: unsigned long]
[+0x11c] Process : 0x8954e020 [Type: _KPROCESS *]
[+0x120] Affinity : 0x3 [Type: unsigned long]
[+0x124] ServiceTable : 0x80b207a0 [Type: void *]
[+0x128] ApcStatePointer [Type: _KAPC_STATE * [2]]
[+0x130] SavedApcState [Type: _KAPC_STATE]
[+0x148] CallbackStack : 0x0 [Type: void *]
[+0x14c] Win32Thread : 0xe17c0d18 [Type: void *]
[+0x150] TrapFrame : 0xba1b0d64 [Type: _KTRAP_FRAME *]
[+0x154] KernelTime : 0x12 [Type: unsigned long]
[+0x158] UserTime : 0x4 [Type: unsigned long]
[+0x15c] StackBase : 0xba1b1000 [Type: void *]
[+0x160] SuspendApc [Type: _KAPC]
[+0x190] SuspendSemaphore [Type: _KSEMAPHORE]
[+0x1a4] TlsArray : 0x0 [Type: void *]
[+0x1a8] LegoData : 0x0 [Type: void *]
[+0x1ac] ThreadListEntry [Type: _LIST_ENTRY]
[+0x1b4] LargeStack : 0x1 [Type: unsigned char]
[+0x1b5] PowerState : 0x0 [Type: unsigned char]
[+0x1b6] NpxIrql : 0x0 [Type: unsigned char]
[+0x1b7] Spare5 : 0x0 [Type: unsigned char]
[+0x1b8] AutoAlignment : 0x0 [Type: unsigned char]
[+0x1b9] Iopl : 0x0 [Type: unsigned char]
[+0x1ba] FreezeCount : 0 [Type: char]
[+0x1bb] SuspendCount : 0 [Type: char]
[+0x1bc] Spare0 [Type: unsigned char [1]]
[+0x1bd] UserIdealProcessor : 0x0 [Type: unsigned char]
[+0x1be] DeferredProcessor : 0x0 [Type: unsigned char]
[+0x1bf] AdjustReason : 0x0 [Type: unsigned char]
[+0x1c0] AdjustIncrement : 0 [Type: char]
[+0x1c1] Spare2 [Type: unsigned char [3]]
0: kd> g
Breakpoint 49 hit
eax=0000001b ebx=804edc6c ecx=80b16802 edx=00000000 esi=00000000 edi=f7737120
eip=80a4002e esp=f78aed64 ebp=f78aed80 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!KiExitDispatcher+0x42:
80a4002e 807dfc02 cmp byte ptr [ebp-4],2 ss:0010:f78aed7c=02
1: kd> g
Breakpoint 16 hit
eax=ffdff000 ebx=895f2a78 ecx=00000002 edx=000013ea esi=00002707 edi=e741d78a
eip=804ee4f8 esp=f789e818 ebp=f789e830 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
hal!HalRequestSoftwareInterrupt:
804ee4f8 643a0d95000000 cmp cl,byte ptr fs:[95h] fs:0030:00000095=00
0: kd> g
Breakpoint 49 hit
eax=0000001b ebx=804edc6c ecx=80b16802 edx=00000000 esi=00000000 edi=ffdff120
eip=80a4002e esp=f789ed88 ebp=f789eda4 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!KiExitDispatcher+0x42:
80a4002e 807dfc02 cmp byte ptr [ebp-4],2 ss:0010:f789eda0=02
0: kd> g
Breakpoint 49 hit
eax=0000001b ebx=804edc6c ecx=80b16802 edx=00000000 esi=00000000 edi=ffdff120
eip=80a4002e esp=f789ed88 ebp=f789eda4 iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
nt!KiExitDispatcher+0x42:
80a4002e 807dfc02 cmp byte ptr [ebp-4],2 ss:0010:f789eda0=02
0: kd> kc
#
00 nt!KiExitDispatcher
01 nt!KeSetEvent
02 HIDCLASS!HidpSubmitInterruptRead
03 HIDCLASS!HidpInterruptReadComplete
04 nt!IopfCompleteRequest
05 USBPORT!USBPORT_CompleteTransfer
06 USBPORT!USBPORT_DoneTransfer
07 USBPORT!USBPORT_FlushDoneTransferList
08 USBPORT!USBPORT_DpcWorker
09 USBPORT!USBPORT_IsrDpcWorker
0a USBPORT!USBPORT_IsrDpc
0b nt!KiRetireDpcList
0c nt!KiDispatchInterrupt
WARNING: Frame IP not in any known module. Following frames may be wrong.
0d 0x0