驱动程序(2) Win10+VS2017驱动程序在双机通信下的内核态调试

上一篇内容里已经讲到了如何搭建双机通信,这也是为内核态下的驱动程序调试做准备。众所周知,KMDF驱动程序主要分为两个部分的代码,一个是包含DriverEntry、DeviceAdd和一些对于触发事件的回调函数,下面我会统一称为驱动程序;另一部分则是从用户态上发出一些IO指令请求,需要驱动程序来做出应答,通常使用的是CreteFile或者IoDeviceControl这些函数,这部分我叫它应用程序。

无论是驱动程序还是应用程序都是一种代码,所以也可以像我们写C或者Python代码那样进行调试,这也是直接观察到程序运行正确与否的最佳手段。驱动程序的调试稍微要麻烦一点,下面就来仔细介绍一下。

(1) 首先驱动程序是运行在内核态下的,一般的打印语句print是显示不出来的,这里我使用的是KdPrintEx语句,将鼠标放到VS的KdPrintEx()上就会看到 #define KdPrintEx() DbgPrintEx,所以这个语句实际上也是DbgPrintEx的宏定义。

同时内核态下的打印语句也是需要优先级值的,为了保证打印出来,可以直接设置该语句为:KdPrintEx((DPFLTR_IHVAUDIO_ID, DPFLTR_ERROR_LEVEL, “打印字样”)) 。如果还是不能看到打印信息,需要在注册表里重新设一个值, HKEY_LOCAL_MACHINE\SYSTEM
CurrentControlSet\COntrol\Session Manager\Debug Print Filter
设置值为 “DEFALULT” = dword:0000000F

(2) 在Debugging 通信之前,先得确保驱动程序的代码没有错误,编译通过,可以在工具栏里选择“生成”,下拉框里选择 “生成‘项目名’”,如果下面输出框内没有报错&

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值