a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 50|回复: 0

[C语言] 向Ring3层发消息

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
  问题:
5 f; u+ x  p, ]% I3 v9 L  使用vtoolsd写vxd时,在vxd中如何使用postmessage向ring3层的应用程序发送消息?
- _$ J/ a0 U3 l9 `" y  解答:, \) y) W, }% B, Z
  no1:8 y7 J: o! H7 F  \$ z( I$ d7 g" }
  哈哈,这问题太简单了:; X) t0 f& }* f5 W
  shell_postmessage(g_hwnd, (spm_um_donotwaitforcrit16 and g_umousemsg),( H: Y' ~7 R7 k$ H
  (word)state,(dword)(wdeltay16 and wdeltax),null,0);
- N& T1 z- k' I, e; t4 T  g_hwnd为ring 3环的窗口句柄,g_umousemsg为消息值(如果消息是自定义的话,要在ring 3的程序中给登记上)。state是wparam,为16位,,(dword)(wdeltay16 and wdeltax)为32位的lparam,至于null,0就看看帮助啦,一般用不上。 这一句是向ring 3程序发送鼠标数据。8 e+ ]  }1 b5 f
  问题:
* V+ i2 j0 ?8 B, l$ a  应用程序的hwnd如何传给vxd? 而且,用mfc时得到的是hwnd类型的m_hwnd,它是一个结构而非16bit的窗口句柄。
0 |' F8 W2 {" u  ~  解答:  n5 E3 G1 _; V
  hwnd可以用deviceiocontrol函数来传递到vxd中,; }# d* H2 ^( T$ O
  ring 3程序:
; O0 e5 q9 Y3 Z9 X# D  hwnd hwnd = ::afxmainwnd()-getsafehwnd();
% ?; v( t$ ~- @, W- w9 M  deviceiocontrol(m_hvxd,vxd_set_hwnd,&hwnd,sizeof(handle),null,0,null,null,0);
+ a9 `2 M, [1 F6 P  vxd中:9 N0 ~6 f9 a/ s% e: n5 `
  dword xdevice::onw32deviceiocontrol(pioctlparams pdiocparams)
- j8 }. j* O' ~8 w& r1 `  {
8 F1 {3 Y# j+ N8 N  switch(pdioparams-dioc_ioctlcode)) J6 D" }9 m( F7 H
  {5 N2 _' W& k' y3 R7 x  L
  case vxd_set_hwnd:. J& [1 Z1 ~+ U; F9 F
  memcpy(&g_hwnd,pdiocparams-dioc_inbuf,sizeof(handle));
2 K- f$ F. J8 x# k  {2 w2 r1 V  break; ...
2 x2 K1 ?- Y% C' k! A7 j  }
- d' D0 z9 e" }; v  }
+ f  ?0 V8 s5 p8 ]  jadesun ps:; y8 H4 E- F5 f5 x$ S
  (ring 0 与 ring3)ring 0组件是受到处理器结构保护的,即在ring 0中的软件受到硬件(芯片)保护,以防止互写。ring 0 组件执行所有特权操作,如与硬件直接通可系统中的任何资源。
2 h/ }$ V  Y) H" z* U  如果在ring 0中的软件出现问题,就会导致整个系统崩溃。(ring 3) 当一个软件组件在ring 3时,就不会受到处理器的保护。但可受到操作系统和虚拟机管理器的保护。ring 3中的进程不具有与ring 0同样的权限,例如,ring 3中的进程不能直接写硬件,这些进程必须与ring 0中的进程通然后由ring 0中的进程对硬件进行操作。
! L" g) t) L1 k" l  这种在权限上的限制意味着如果一个软件在ring 3上出现失败,它也不会破坏整个系统。即在ring 3上的软件组件出现问题不会影响到系统正在运行的其它软件。正是这个原因,所有的应用程序都放在ring 3上运行。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-18 04:12 , Processed in 0.742931 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表