消息队列

消息队列存储在0环
KThread - WIn32Thread(图形界面有值)->包含消息队列
Thread.ServiceTable-KeServiceDescriptorTable->服务号大于100时  访问win32K.sys ->PsConvertTOGuiTHread -
扩充内核栈 64K大内核栈  普通线程内核栈只有12K
创建消息队列的结构体 挂到KTHread上
Thread.ServiceTable->KeServiceDescriptorTableShadow 包含ssdt和win32k两张表
把内存数据映射到本进程空间

win32k --监控鼠标线程 监控键盘进程
内核_WINDOW_OBJECT  PTHREADINFO WNDPROC
窗口句柄是全局的  一个线程可有多个窗口共享消息队列 一个窗口只能对应一个线程

消息队列的结构  USERMESSAGEQUEUE
SendMessageListHead
PostMessageListHead
HardwareListHead
NotifyListHead
DIspathingListHead
LocalDispathListHead
MouseMoveMessage

GetMessage ->直接处理SendMessageListHead的消息 KeUserModeCallBack
取出其他队列的消息 -》DisPatchMessage ->0环根据句柄找到窗口回调-》 KeUserModeCallBack
TranslateMessage 仅仅转换加工键盘消息
0环-》KeUserModeCallBack  窗口创建时
FS:[0] TEB+30 PEB + 2c  回调函数地址表

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值