SHELL32!Shell_MergeMenus函数分析
SHELL32!Shell_MergeMenus函数分析
UINT Shell_MergeMenus(
[in] HMENU hmDst,
[in] HMENU hmSrc,
UINT uInsert,
UINT uIDAdjust,
UINT uIDAdjustMax,
ULONG uFlags
);
参数
[in] hmDst 类型: HMENU 要向其添加 hmSrc 的目标菜单。
[in] hmSrc 类型: HMENU 添加到 hmDst 的源菜单。
uInsert 类型: UINT hmDst 中的点,在该点之后插入 hmSrc 中的条目。
uIDAdjust 类型: UINT 此数字将添加到每个菜单的 ID 中,以提供调整后的 ID。 设置为 0 不进行调整。 uIDAdjust 的值通常是 hmDst 中的项数。 可以使用 GetMenuItemCount 获取此数字。
uIDAdjustMax 类型: UINT 要添加到菜单的最大调整 ID。 不会添加任何大于此值的调整 ID。 若要允许所有 ID,请将此参数设置为 0xFFFF。
uFlags 类型: ULONG 以下一个或多个标志。
MM_ADDSEPARATOR
在两个菜单中的项之间添加分隔符(如果尚不存在)。 如果要将 hmSrc 中的条目插入 hmDst 中间,则会在 hmSrc 材料上方和下方添加分隔符。
MM_DONTREMOVESEPS
请勿删除两个菜单中的任何现有分隔符。 请注意,这可能会导致一行中出现两个分隔符。
MM_SUBMENUSHAVEIDS
如果子菜单具有应调整的 ID,请设置此标志。
返回值
类型: UINT
返回菜单末尾的下一个打开 ID, (调整后的最大 ID + 1) 。
1: kd> dv
hmDst = 0x001a0095
hmSrc = 0x00160097
uInsert = 0
uIDAdjust = 0x7901
uIDAdjustMax = 0x79ff
uFlags = 0x20000
1: kd> dt win32k!menu 0xbc692924
+0x000 head : _PROCDESKHEAD
+0x014 fFlags : 1
+0x018 iItem : 0n0
+0x01c cAlloced : 8
+0x020 cItems : 8
+0x024 cxMenu : 0
+0x028 cyMenu : 0
+0x02c cxTextAlign : 0
+0x030 spwndNotify : (null)
+0x034 rgItems : 0xbc6938d4 tagITEM
+0x038 pParentMenus : (null)
+0x03c dwContextHelpId : 0
+0x040 cyMax : 0
+0x044 dwMenuData : 0
+0x048 hbrBack : (null)
+0x04c iTop : 0n0
+0x050 iMaxTop : 0n0
+0x054 dwArrowsOn : 0y00
1: kd> dx -id 0,0,89589d88 -r1 ((win32k!tagITEM *)0xbc6938d4)
((win32k!tagITEM *)0xbc6938d4) : 0xbc6938d4 [Type: tagITEM *]
[+0x000] fType : 0x0 [Type: unsigned int]
[+0x004] fState : 0x0 [Type: unsigned int]
[+0x008] wID : 0x0 [Type: unsigned int]
[+0x00c] spSubMenu : 0xbc693ce4 [Type: tagMENU *]
[+0x010] hbmpChecked : 0x0 [Type: void *]
[+0x014] hbmpUnchecked : 0x0 [Type: void *]
[+0x018] lpstr : 0xbc694aa4 : 0x26 [Type: unsigned short *]
[+0x01c] cch : 0x5 [Type: unsigned long]
[+0x020] dwItemData : 0x0 [Type: unsigned long]
[+0x024] xItem : 0x0 [Type: unsigned long]
[+0x028] yItem : 0x0 [Type: unsigned long]
[+0x02c] cxItem : 0x0 [Type: unsigned long]
[+0x030] cyItem : 0x0 [Type: unsigned long]
[+0x034] dxTab : 0x0 [Type: unsigned long]
[+0x038] ulX : 0x7fffffff [Type: unsigned long]
[+0x03c] ulWidth : 0x0 [Type: unsigned long]
[+0x040] hbmp : 0x0 [Type: HBITMAP__ *]
[+0x044] cxBmp : -1 [Type: int]
[+0x048] cyBmp : 0 [Type: int]
1: kd> dt win32k!tagITEM 0xbc6938d4+0x4c*7
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc6929dc -> 0x7b
+0x01c cch : 0x26
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc6929dc
bc6929dc 7b 00 34 00 34 00 30 00-37 00 35 00 44 00 36 00 {.4.4.0.7.5.D.6.
bc6929ec 31 00 2d 00 32 00 30 00-35 00 30 00 2d 00 34 00 1.-.2.0.5.0.-.4.
bc6929fc 44 00 46 00 34 00 2d 00-42 00 43 00 35 00 44 00 D.F.4.-.B.C.5.D.
bc692a0c 2d 00 43 00 42 00 41 00-38 00 38 00 41 00 38 00 -.C.B.A.8.8.A.8.
bc692a1c 34 00 45 00 37 00 35 00-42 00 7d 00 00 00 55 48 4.E.7.5.B.}...UH
1: kd> dt win32k!tagITEM 0xbc6938d4+0x4c*6
+0x000 fType : 0
+0x004 fState : 1
+0x008 wID : 0x7902
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc692d94 -> 0x50
+0x01c cch : 0xf
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc692d94
bc692d94 50 00 61 00 73 00 74 00-65 00 20 00 26 00 53 00 P.a.s.t.e. .&.S.
bc692da4 68 00 6f 00 72 00 74 00-63 00 75 00 74 00 00 00 h.o.r.t.c.u.t...
1: kd> dt win32k!tagITEM 0xbc6938d4+0x4c*5
+0x000 fType : 0
+0x004 fState : 1
+0x008 wID : 0x7903
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc67512c -> 0x26
+0x01c cch : 6
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc67512c
bc67512c 26 00 50 00 61 00 73 00-74 00 65 00 00 00 55 48 &.P.a.s.t.e...UH
1: kd> dt win32k!tagITEM 0xbc6938d4+0x4c*4
+0x000 fType : 0x800
+0x004 fState : 3
+0x008 wID : 3
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : (null)
+0x01c cch : 0
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> dt win32k!tagITEM 0xbc6938d4+0x4c*3
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x7905
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc692a8c -> 0x52
+0x01c cch : 8
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc692a8c
bc692a8c 52 00 26 00 65 00 66 00-72 00 65 00 73 00 68 00 R.&.e.f.r.e.s.h.
1: kd> dt win32k!tagITEM 0xbc6938d4+0x4c*2
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0
+0x00c spSubMenu : 0xbc692afc tagMENU
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc693bfc -> 0x41
+0x01c cch : 0x11
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> dt win32k!tagITEM 0xbc6938d4+0x4c*1
+0x000 fType : 0x800
+0x004 fState : 3
+0x008 wID : 0xe
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : (null)
+0x01c cch : 0
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> dt win32k!tagITEM 0xbc6938d4+0x4c*0
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0
+0x00c spSubMenu : 0xbc693ce4 tagMENU
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc694aa4 -> 0x26
+0x01c cch : 5
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> dx -id 0,0,89589d88 -r1 ((win32k!tagMENU *)0xbc692afc)
((win32k!tagMENU *)0xbc692afc) : 0xbc692afc [Type: tagMENU *]
[+0x000] head [Type: _PROCDESKHEAD]
[+0x014] fFlags : 0x1 [Type: unsigned long]
[+0x018] iItem : 0 [Type: int]
[+0x01c] cAlloced : 0x10 [Type: unsigned int]
[+0x020] cItems : 0x9 [Type: unsigned int]
[+0x024] cxMenu : 0x0 [Type: unsigned long]
[+0x028] cyMenu : 0x0 [Type: unsigned long]
[+0x02c] cxTextAlign : 0x0 [Type: unsigned long]
[+0x030] spwndNotify : 0x0 [Type: tagWND *]
[+0x034] rgItems : 0xbc694104 [Type: tagITEM *]
[+0x038] pParentMenus : 0xbc693c7c [Type: tagMENULIST *]
[+0x03c] dwContextHelpId : 0x0 [Type: unsigned long]
[+0x040] cyMax : 0x0 [Type: unsigned long]
[+0x044] dwMenuData : 0x0 [Type: unsigned long]
[+0x048] hbrBack : 0x0 [Type: HBRUSH__ *]
[+0x04c] iTop : 0 [Type: int]
[+0x050] iMaxTop : 0 [Type: int]
[+0x054 ( 1: 0)] dwArrowsOn : 0x0 [Type: unsigned long]
1: kd> dx -id 0,0,89589d88 -r1 ((win32k!tagITEM *)0xbc694104)
((win32k!tagITEM *)0xbc694104) : 0xbc694104 [Type: tagITEM *]
[+0x000] fType : 0x0 [Type: unsigned int]
[+0x004] fState : 0x0 [Type: unsigned int]
[+0x008] wID : 0x790e [Type: unsigned int]
[+0x00c] spSubMenu : 0x0 [Type: tagMENU *]
[+0x010] hbmpChecked : 0x0 [Type: void *]
[+0x014] hbmpUnchecked : 0x0 [Type: void *]
[+0x018] lpstr : 0xbc693b94 : 0x26 [Type: unsigned short *]
[+0x01c] cch : 0x5 [Type: unsigned long]
[+0x020] dwItemData : 0x0 [Type: unsigned long]
[+0x024] xItem : 0x0 [Type: unsigned long]
[+0x028] yItem : 0x0 [Type: unsigned long]
[+0x02c] cxItem : 0x0 [Type: unsigned long]
[+0x030] cyItem : 0x0 [Type: unsigned long]
[+0x034] dxTab : 0x0 [Type: unsigned long]
[+0x038] ulX : 0x7fffffff [Type: unsigned long]
[+0x03c] ulWidth : 0x0 [Type: unsigned long]
[+0x040] hbmp : 0x0 [Type: HBITMAP__ *]
[+0x044] cxBmp : -1 [Type: int]
[+0x048] cyBmp : 0 [Type: int]
1: kd> db 0xbc693b94
bc693b94 26 00 4e 00 61 00 6d 00-65 00 00 00 55 48 5f 54 &.N.a.m.e...UH_T
1: kd> win32k!tagITEM 0xbc694104+0x4c*8
^ Syntax error in 'win32k!tagITEM 0xbc694104+0x4c*8'
1: kd> dt win32k!tagITEM 0xbc694104+0x4c*8
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x7906
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc692bb4 -> 0x41
+0x01c cch : 0xe
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc692bb4
bc692bb4 41 00 26 00 6c 00 69 00-67 00 6e 00 20 00 74 00 A.&.l.i.g.n. .t.
bc692bc4 6f 00 20 00 47 00 72 00-69 00 64 00 00 00 55 48 o. .G.r.i.d...UH
1: kd> dt win32k!tagITEM 0xbc694104+0x4c*7
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x7907
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc693e54 -> 0x26
+0x01c cch : 0xd
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc693e54
bc693e54 26 00 41 00 75 00 74 00-6f 00 20 00 41 00 72 00 &.A.u.t.o. .A.r.
bc693e64 72 00 61 00 6e 00 67 00-65 00 00 00 55 48 5f 54 r.a.n.g.e...UH_T
1: kd> dt win32k!tagITEM 0xbc694104+0x4c*6
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x7908
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc693ecc -> 0x53
+0x01c cch : 0xf
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc693ecc
bc693ecc 53 00 68 00 6f 00 77 00-20 00 69 00 6e 00 20 00 S.h.o.w. .i.n. .
bc693edc 26 00 47 00 72 00 6f 00-75 00 70 00 73 00 00 00 &.G.r.o.u.p.s...
bc693eec 55 48 5f 54 41 49 4c 00-ab ab ab ab ab ab ab ab UH_TAIL.........
1: kd> dt win32k!tagITEM 0xbc694104+0x4c*5
+0x000 fType : 0x800
+0x004 fState : 3
+0x008 wID : 8
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : (null)
+0x01c cch : 0
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> dt win32k!tagITEM 0xbc694104+0x4c*4
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x790a
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc693f4c -> 0x41
+0x01c cch : 0xb
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc693f4c
bc693f4c 41 00 74 00 74 00 72 00-69 00 62 00 26 00 75 00 A.t.t.r.i.b.&.u.
bc693f5c 74 00 65 00 73 00 00 00-55 48 5f 54 41 49 4c 00 t.e.s...UH_TAIL.
1: kd> dt win32k!tagITEM 0xbc694104+0x4c*3
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x790b
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc693fc4 -> 0x26
+0x01c cch : 9
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc693fc4
bc693fc4 26 00 4d 00 6f 00 64 00-69 00 66 00 69 00 65 00 &.M.o.d.i.f.i.e.
bc693fd4 64 00 00 00 55 48 5f 54-41 49 4c 00 ab ab ab ab d...UH_TAIL.....
1: kd> dt win32k!tagITEM 0xbc694104+0x4c*2
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x790c
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc694034 -> 0x26
+0x01c cch : 5
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc694034
bc694034 26 00 54 00 79 00 70 00-65 00 00 00 55 48 5f 54 &.T.y.p.e...UH_T
bc694044 41 49 4c 00 ab ab ab ab-ab ab ab ab 00 00 00 00 AIL.............
1: kd> dt win32k!tagITEM 0xbc694104+0x4c*1
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x790d
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc69409c -> 0x26
+0x01c cch : 5
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc69409c
bc69409c 26 00 53 00 69 00 7a 00-65 00 00 00 55 48 5f 54 &.S.i.z.e...UH_T
bc6940ac 41 49 4c 00 ab ab ab ab-ab ab ab ab 00 00 00 00 AIL.............
1: kd> dt win32k!tagITEM 0xbc694104+0x4c*0
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x790e
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc693b94 -> 0x26
+0x01c cch : 5
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc693b94
bc693b94 26 00 4e 00 61 00 6d 00-65 00 00 00 55 48 5f 54 &.N.a.m.e...UH_T
bc693ba4 41 49 4c 00 ab ab ab ab-ab ab ab ab 00 00 00 00 AIL.............
1: kd> dx -id 0,0,89589d88 -r1 ((win32k!tagMENU *)0xbc693ce4)
((win32k!tagMENU *)0xbc693ce4) : 0xbc693ce4 [Type: tagMENU *]
[+0x000] head [Type: _PROCDESKHEAD]
[+0x014] fFlags : 0x1 [Type: unsigned long]
[+0x018] iItem : 0 [Type: int]
[+0x01c] cAlloced : 0x8 [Type: unsigned int]
[+0x020] cItems : 0x5 [Type: unsigned int]
[+0x024] cxMenu : 0x0 [Type: unsigned long]
[+0x028] cyMenu : 0x0 [Type: unsigned long]
[+0x02c] cxTextAlign : 0x0 [Type: unsigned long]
[+0x030] spwndNotify : 0x0 [Type: tagWND *]
[+0x034] rgItems : 0xbc694624 [Type: tagITEM *]
[+0x038] pParentMenus : 0xbc694b0c [Type: tagMENULIST *]
[+0x03c] dwContextHelpId : 0x0 [Type: unsigned long]
[+0x040] cyMax : 0x0 [Type: unsigned long]
[+0x044] dwMenuData : 0x0 [Type: unsigned long]
[+0x048] hbrBack : 0x0 [Type: HBRUSH__ *]
[+0x04c] iTop : 0 [Type: int]
[+0x050] iMaxTop : 0 [Type: int]
[+0x054 ( 1: 0)] dwArrowsOn : 0x0 [Type: unsigned long]
1: kd> dx -id 0,0,89589d88 -r1 ((win32k!tagITEM *)0xbc694624)
((win32k!tagITEM *)0xbc694624) : 0xbc694624 [Type: tagITEM *]
[+0x000] fType : 0x0 [Type: unsigned int]
[+0x004] fState : 0x0 [Type: unsigned int]
[+0x008] wID : 0x7914 [Type: unsigned int]
[+0x00c] spSubMenu : 0x0 [Type: tagMENU *]
[+0x010] hbmpChecked : 0x0 [Type: void *]
[+0x014] hbmpUnchecked : 0x0 [Type: void *]
[+0x018] lpstr : 0xbc694a2c : 0x54 [Type: unsigned short *]
[+0x01c] cch : 0xb [Type: unsigned long]
[+0x020] dwItemData : 0x0 [Type: unsigned long]
[+0x024] xItem : 0x0 [Type: unsigned long]
[+0x028] yItem : 0x0 [Type: unsigned long]
[+0x02c] cxItem : 0x0 [Type: unsigned long]
[+0x030] cyItem : 0x0 [Type: unsigned long]
[+0x034] dxTab : 0x0 [Type: unsigned long]
[+0x038] ulX : 0x7fffffff [Type: unsigned long]
[+0x03c] ulWidth : 0x0 [Type: unsigned long]
[+0x040] hbmp : 0x0 [Type: HBITMAP__ *]
[+0x044] cxBmp : -1 [Type: int]
[+0x048] cyBmp : 0 [Type: int]
1: kd> dt win32k!tagITEM 0xbc694624+0x4c*4
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x7910
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc693d9c -> 0x26
+0x01c cch : 8
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc693d9c
bc693d9c 26 00 44 00 65 00 74 00-61 00 69 00 6c 00 73 00 &.D.e.t.a.i.l.s.
bc693dac 00 00 55 48 5f 54 41 49-4c 00 ab ab ab ab ab ab ..UH_TAIL.......
1: kd> dt win32k!tagITEM 0xbc694624+0x4c*3
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x7911
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc6948e4 -> 0x26
+0x01c cch : 5
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc6948e4
bc6948e4 26 00 4c 00 69 00 73 00-74 00 00 00 55 48 5f 54 &.L.i.s.t...UH_T
bc6948f4 41 49 4c 00 ab ab ab ab-ab ab ab ab 00 00 00 00 AIL.............
1: kd> dt win32k!tagITEM 0xbc694624+0x4c*2
+0x000 fType : 0x200
+0x004 fState : 8
+0x008 wID : 0x7912
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc69494c -> 0x49
+0x01c cch : 6
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc69494c
bc69494c 49 00 63 00 6f 00 26 00-6e 00 73 00 00 00 55 48 I.c.o.&.n.s...UH
bc69495c 5f 54 41 49 4c 00 ab ab-ab ab ab ab ab ab ca ca _TAIL...........
1: kd> dt win32k!tagITEM 0xbc694624+0x4c*1
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x7913
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc6949bc -> 0x54
+0x01c cch : 6
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc6949bc
bc6949bc 54 00 69 00 6c 00 65 00-26 00 73 00 00 00 55 48 T.i.l.e.&.s...UH
bc6949cc 5f 54 41 49 4c 00 ab ab-ab ab ab ab ab ab ca ca _TAIL...........
1: kd> dt win32k!tagITEM 0xbc694624+0x4c*0
+0x000 fType : 0
+0x004 fState : 0
+0x008 wID : 0x7914
+0x00c spSubMenu : (null)
+0x010 hbmpChecked : (null)
+0x014 hbmpUnchecked : (null)
+0x018 lpstr : 0xbc694a2c -> 0x54
+0x01c cch : 0xb
+0x020 dwItemData : 0
+0x024 xItem : 0
+0x028 yItem : 0
+0x02c cxItem : 0
+0x030 cyItem : 0
+0x034 dxTab : 0
+0x038 ulX : 0x7fffffff
+0x03c ulWidth : 0
+0x040 hbmp : (null)
+0x044 cxBmp : 0n-1
+0x048 cyBmp : 0n0
1: kd> db 0xbc694a2c
bc694a2c 54 00 26 00 68 00 75 00-6d 00 62 00 6e 00 61 00 T.&.h.u.m.b.n.a.
bc694a3c 69 00 6c 00 73 00 00 00-55 48 5f 54 41 49 4c 00 i.l.s...UH_TAIL.
相关文章:
SHELL32!Shell_MergeMenus函数分析
SHELL32!Shell_MergeMenus函数分析 UINT Shell_MergeMenus( [in] HMENU hmDst, [in] HMENU hmSrc, UINT uInsert, UINT uIDAdjust, UINT uIDAdjustMax, ULONG uFlags ); 参数 [in] hmDst 类型: HMENU 要向其添加 hmSrc…...

华为云deepseek大模型平台:deepseek满血版
华为云硅基流动使用Chatbox接入DeepSeek-R1满血版671B 1、注册: 华为云deepseek大模型平台注册:https://cloud.siliconflow.cn/i/aDmz6aVN 说明:填写邀请码的话邀请和被邀请的账号都会获得2000 万 Tokens;2个帐号间不会与其他关联…...

AutoGen 技术博客系列 八:深入剖析 Swarm—— 智能体协作的新范式
本系列博文在掘金同步发布, 更多优质文章,请关注本人掘金账号: 人肉推土机的掘金账号 AutoGen系列一:基础介绍与入门教程 AutoGen系列二:深入自定义智能体 AutoGen系列三:内置智能体的应用与实战 AutoGen系列四&am…...

从零开始开发纯血鸿蒙应用之网页浏览
从零开始开发纯血鸿蒙应用 〇、前言一、优化菜单交互1、BuilderFunction.ets2、改造 PageTitleBar 二、网址打开1、方式选择1、使用浏览器打开2、内部打开2.1、声明权限2.2、封装 WebViewPage2.2.1、组件字段2.2.2、aboutToAppear2.2.3、onBackPress2.2.4、标题栏2.2.4、网页内…...

【大模型LLM】DeepSeek LLM Scaling Open-Source Language Models with Longtermism
深度探索LLM:以长期主义扩展开源语言模型 0.论文摘要 开源大语言模型(LLMs)的快速发展确实令人瞩目。然而,以往文献中描述的扩展规律得出了不同的结论,这为LLMs的扩展蒙上了一层阴影。我们深入研究了扩展规律&#…...

分布式事务-本地消息表学习与落地方案
本文参考: 数据库事务系列04-本地消息表实现分布式事务 基础概念 本地消息表实现分布式事务最终一致性的核心:是通过上游本地事务的原子性持久性,配合中间件的重试机制,从而实现调用下游的最终一致性。 这里有几个要点可以解析一…...

Debezium系列之:记录一次源头数据库刷数据,造成数据丢失的原因
Debezium系列之:记录一次源头数据库刷数据,造成数据丢失的原因 一、背景二、查看topic日志信息三、结论四、解决方法一、背景 源头数据库在很短的时间内刷了大量的数据,部分数据在hdfs丢失了 理论上debezium数据采集不会丢失,就需要排查数据链路某个节点是否有数据丢失。 …...

PHP约课健身管理系统小程序源码
🏋️♂️ 约课健身管理系统小程序:重塑健身预约体验,引领数字化健身新时代 一款基于ThinkPHPUniapp框架,由米扬精心雕琢的约课健身管理系统小程序,专为健身房、健身工作室、运动会所、运动场馆、瑜伽馆、拳馆等泛健…...

Java之泛型
文章目录 首先接着上一篇(集合)文章,来个非常牛逼的易错题传统集合问题分析泛型快速入门案例泛型介绍泛型的好处泛型的语法泛型的声明泛型的实例化泛型使用举例泛型使用的注意事项和细节 自定义泛型自定义泛型方法 自定义泛型接口自定义泛型方…...

图论 之 最小生成树
文章目录 题目1584.连接所有点的最小费用 最小生成树MST,有两种算法进行求解,分别是Kruskal算法和Prim算法Kruskal算法从边出发,适合用于稀疏图Prim算法从顶点出发,适合用于稠密图:基本思想是从一个起始顶点开始&#…...

STM32-有关内存堆栈、map文件
STM32堆栈空间大小设置_stm32堆栈分配大小-CSDN博客 STM32堆栈的大小及内存四(五)区的分析 - 天街小雨润地狠 - 博客园 .map文件的位置...
Linux系统中常见的词GNU是什么意思?
GNU 是 “GNU’s Not Unix” 的递归缩写,它是一个自由软件项目,旨在创建一个完全自由的操作系统。这个名字反映了GNU项目的核心理念:它试图创建一个类Unix的系统,但不是Unix本身。 GNU 项目由 理查德斯托曼(Richard S…...

【个人开源】——从零开始在高通手机上部署sd(二)
代码:https://github.com/chenjun2hao/qualcomm.ai 推理耗时统计 单位/ms 硬件qnncpu_clipqnncpu_unetqnncpu_vaehtp_cliphtp_unethtp_vae骁龙8 gen124716.994133440.39723.215411.097696.327 1. 下载依赖 下载opencv_x64.tar,提取码: rrbp下载opencv_aarch64.t…...
【MCU驱动开发概述】
MCU驱动开发概述 目录 MCU驱动开发概述二、驱动开发的目的三、驱动开发的关键组成部分四、示例 - LED 控制驱动 一、引言 MCU(Microcontroller Unit),即微控制器单元,是一种集成在单个芯片上的计算机系统,通常用于控制…...
PC端Linux之虚拟CAN
在调试QT程序时候需要用到虚拟CAN进行发送和接收的操作,以此记录方法。 在调试QT程序时候需要用到虚拟CAN进行发送和接收的操作,以此记录方法。 1、安装can-utils sudo apt install can-utils ifconig -a【查看是否安装成功,是否有can0网络…...
C++:std::thread、条件变量与信号量
介绍 在多线程编程的世界里,协调不同线程之间的工作是一项极具挑战性的任务。线程可能需要等待特定条件的满足,或者对共享资源的访问进行限制。C 标准库为我们提供了强大的工具,如 std::thread 用于创建和管理线程,条件变量用于线…...

POI pptx转图片
前言 ppt页面预览一直是个问题,office本身虽然有预览功能但是收费,一些开源的项目的预览又不太好用,例如开源的:kkfileview pptx转图片 1. 引入pom依赖 我这个项目比较老,使用版本较旧 <dependency><gro…...
Java File 类
File 类是 Java 中用于处理文件和目录的基本类之一,位于 java.io 包中。它提供了多种方法来创建、删除、检查、修改文件或目录的属性,以及列出文件夹中的内容。虽然 File 类本身不提供直接的读取或写入文件内容的方法(这些操作通常由 FileInp…...
工业通信协议 EtherNet/IP 全面解析
工业通信协议 EtherNet/IP 全面解析 EtherNet/IP(以太网工业协议)是一种基于标准以太网的工业自动化通信协议,由 ODVA(开放设备网供应商协会) 管理。它融合了 CIP(通用工业协议) 和以太网技术&…...

使用docker配置PostgreSQL
配置docker阿里云镜像仓库 国内使用docker hub拉取镜像比较慢,所以首先配置个人的镜像仓库。 阿里云的个人镜像仓库是免费的,对个人来说足够用。 具体操作参考阿里云官方链接 。 关于个人镜像仓库的使用参考链接。 配置完个人镜像仓库后将公网配置到doc…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...

力扣热题100 k个一组反转链表题解
题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

高分辨率图像合成归一化流扩展
大家读完觉得有帮助记得关注和点赞!!! 1 摘要 我们提出了STARFlow,一种基于归一化流的可扩展生成模型,它在高分辨率图像合成方面取得了强大的性能。STARFlow的主要构建块是Transformer自回归流(TARFlow&am…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
阻止除自定义标签之外的所有标签 先输入一些标签测试,说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时(如通过点击或键盘导航&…...