kd> dt_handle_Table e1931a40
nt!_HANDLE_TABLE
+0x000 TableCode : 0xe2016000
+0x004 QuotaProcess : 0x86335020 _EPROCESS
+0x008 UniqueProcessId : 0x00000700 Void
+0x00c HandleTableLock : [4] _EX_PUSH_LOCK
+0x01c HandleTableList : _LIST_ENTRY [ 0xe1f3e2b4 - 0xe1f5290c ]
+0x024 HandleContentionEvent : _EX_PUSH_LOCK
+0x028 DebugInfo : (null)
+0x02c ExtraInfoPages : 0n0
+0x030 FirstFree : 0x19c
+0x034 LastFree : 0
+0x038 NextHandleNeedingPool : 0x800
+0x03c HandleCount : 0n114
+0x040 Flags : 0
+0x040 StrictFIFO : 0y0
+0x038 NextHandleNeedingPool : 0x800
这个是上限当CID大于这个就去另一个表里找
一个句柄表的大小是一个页4k 4096 一个HANDLE_TABLE_ENTRY8个字节 所以一个表能存4096/8=512个表项,句柄以4递增,所以512*4=2048,最大索引时2048也就是0x800
+0x000 TableCode : 0xe2016000
这个后面是0就是一级表,
如果非零就掩去后两位0xe2016001&0xfffffffC;得到的地址里存的是两个一级表