clin_007
驱动牛犊
驱动牛犊
  • 注册日期2006-12-02
  • 最后登录2009-03-22
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望56点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分12分
阅读:2579回复:9

如何在内核态弹出对话框?

楼主#
更多 发布于:2007-01-09 17:14
  我最近在学习编写驱动程序,现在有个疑问是驱动程序是运行在ring0级的,如何在这个级别弹出对话框呢?以前写的都是应用层的程序,感觉在内核态下不能在直接用诸如CreateWindowEx ,以及DialogBox这种函数了。请高手指点一下,谢谢!
bizhan123
驱动小牛
驱动小牛
  • 注册日期2006-12-26
  • 最后登录2012-03-19
  • 粉丝0
  • 关注0
  • 积分1002分
  • 威望166点
  • 贡献值0点
  • 好评度125点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-01-09 17:22
老兄,我觉得内核态是非图形界面的吧?做个Linux的人应该清楚吧。
实用信息:www.infozobo.com
WQXNETQIQI
驱动大牛
驱动大牛
  • 注册日期2006-06-12
  • 最后登录2010-10-26
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望1076点
  • 贡献值0点
  • 好评度895点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2007-01-09 17:31
驱动开发者 呵呵
clin_007
驱动牛犊
驱动牛犊
  • 注册日期2006-12-02
  • 最后登录2009-03-22
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望56点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分12分
地板#
发布于:2007-01-09 18:03
引用第2楼WQXNETQIQI2007-01-09 17:31发表的“”:
http://blog.donews.com/uuty/archive/2005/12/06/648656.aspx
kernel下调用MessAgeBox


我看不到代码啊,能不能帮忙帖上来,谢谢
s0beit
驱动牛犊
驱动牛犊
  • 注册日期2005-09-01
  • 最后登录2009-01-09
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望13点
  • 贡献值1点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-01-15 18:33
有个undocumented的方法,通过用STATUS_SERVICE_NOTIFICATION的方法调用NtRaiseHardError就可以了。

    ULONG pUnicodeArguments[] = {0, 0, 0};
    ULONG    ReturnValue;


    RtlInitUnicodeString(&uniText, L"Work?");
    RtlInitUnicodeString(&uniCaption, L"Text");
    
    pUnicodeArguments[0] = (ULONG)&uniText;
    pUnicodeArguments[1] = (ULONG)&uniCaption;
    
    ZwRaiseHardError(0x50000018, 3, 3, pUnicodeArguments, 1, &ReturnValue);

第5个参数是弹出的对话框的类型。
zlf1110
驱动牛犊
驱动牛犊
  • 注册日期2002-11-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分39分
  • 威望365点
  • 贡献值0点
  • 好评度30点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-01-17 17:05
以前写WIN98下的VXD驱动时,有个内核对话框函数SHELL_MESSAGEBOX。清华大学出的早期VXD编程书中的第一个例子就是将弹出内核对话框的,建立楼主参考一下。后来没有用过,就不知道XP下怎么样。
zlf1110
clin_007
驱动牛犊
驱动牛犊
  • 注册日期2006-12-02
  • 最后登录2009-03-22
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望56点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分12分
6楼#
发布于:2007-01-17 22:00
谢谢楼上两位,这些函数虽然能够实现,但是我想达到的效果是以后弹出的对话框可以自己加一些比如复选框之类的控件,现在我暂时用进程间通信的方法搞定它
Odyssey
驱动小牛
驱动小牛
  • 注册日期2004-12-15
  • 最后登录2008-03-29
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望115点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2007-01-17 22:49
queue a APC to a user mode process, say explorer.exe
killvxk
论坛版主
论坛版主
  • 注册日期2005-10-03
  • 最后登录2014-04-14
  • 粉丝3
  • 关注1
  • 积分1082分
  • 威望2003点
  • 贡献值0点
  • 好评度1693点
  • 原创分2分
  • 专家分0分
8楼#
发布于:2007-01-18 10:36
反正都驱动了,那就自己画窗体(写屏,写屏),消息需要的话处理鼠标和键盘(Attatch到他们驱动上,XX~)
没有战争就没有进步 X3工作组 为您提供最好的军火
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
9楼#
发布于:2007-02-04 15:37
引用第4楼s0beit2007-01-15 18:33发表的“”:
第5个参数是弹出的对话框的类型。


改了还是祗有一种类型!
游客

返回顶部