首页
社区
课程
招聘
[旧帖] [原创][求助]写了个使键盘中断失效的小驱动,由于刚刚学习驱动一周请高手指点 0.00雪花
发表于: 2009-7-11 15:04 1811

[旧帖] [原创][求助]写了个使键盘中断失效的小驱动,由于刚刚学习驱动一周请高手指点 0.00雪花

2009-7-11 15:04
1811
源码如下:高手看了别笑我啊,我刚刚学习驱动一周
#include <ntddk.h>

NTSTATUS WaitBufferEmpty()
{
        //设置端口号
        ULONG uc_cmdPort=0x64;
        //读取intel i8402芯片的状态字
        UCHAR uc_Status=READ_PORT_UCHAR((PCHAR)uc_cmdPort);
        //只保留低2位的值
        uc_Status=uc_Status&0x2;
        //一直等到输入缓冲区为空
        while(uc_Status)
        {
                UCHAR uc_Status=READ_PORT_UCHAR((PCHAR)uc_cmdPort);
                //只保留低2位的值
                uc_Status=uc_Status&0x2;
        }
        return STATUS_SUCCESS;
}

// DriverEntry,入口函数。相当于main。
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{
        //设置端口号
        ULONG uc_cmdPort=0x64;
        ULONG uc_dataPort=0x60;
        //等到输入缓冲区为空
        if(WaitBufferEmpty()==STATUS_SUCCESS)
        {
                //往intel i8042芯片写入命令字,使键盘中断失效
                WRITE_PORT_UCHAR((PCHAR)uc_cmdPort,0x60);
                if (WaitBufferEmpty()==STATUS_SUCCESS)
                {
                        WRITE_PORT_UCHAR((PCHAR)uc_dataPort,0x46);
                }
        }
       
        // 设置一个卸载函数便于这个函数能退出。
        //driver->DriverUnload = DriverUnload;
        return STATUS_SUCCESS;
}

我的代码只是想让键盘中断失效啊
为什么在VM Station里执行驱动,然后敲击键盘,VM Station里的OS就没没反映了,和死机差不多
望高手指点一下

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
怎么没人点我啊
2009-7-11 19:32
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
晕了,就是没人回答
2009-7-13 08:16
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
4
你可以用WinDBG调试VM中的系统,当系统死掉后,在WinDBG中将其Break,看停在了什么地方。
2009-7-13 21:54
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢,我试试
2009-7-14 10:01
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
vc编的吗?
2009-7-14 16:27
0
游客
登录 | 注册 方可回帖
返回
//