rain0412
驱动牛犊
驱动牛犊
  • 注册日期2006-01-23
  • 最后登录2012-08-18
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望201点
  • 贡献值0点
  • 好评度42点
  • 原创分0分
  • 专家分0分
阅读:1685回复:4

请教Kbfiltr的IOCTL 关于Create another device object的问题

楼主#
更多 发布于:2008-09-08 16:47
在做键盘过滤驱动的时候,想用DeviceIoControl函数操作键盘的IOCTL的时候,老不成功,感觉是没有明白Kbfiltr_IOCTL前面那段说明
    // If you are planning on using this function, you must create another
    // device object to send the requests to.  Please see the considerations
    // comments for KbFilter_DispatchPassThrough for implementation details.
    //
    // DriverObject->MajorFunction [IRP_MJ_DEVICE_CONTROL] = KbFilter_IoCtl;
那位朋友能不能帮忙解释一下关于IOCTL的程序流程
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-09-09 08:59
就是你需要另外创建一个自己的设备对象,
如果是WDM的使用IoCreateDevice就可以完成你的功能,
如果是KMDF的则使用WdfDeviceCreate等函数
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
rain0412
驱动牛犊
驱动牛犊
  • 注册日期2006-01-23
  • 最后登录2012-08-18
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望201点
  • 贡献值0点
  • 好评度42点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-09-09 09:11
DDK的kbfiltr.c中有用IoCreateDevice创建了一个设备,对于Kbfilter_Ioctl是否还要创建一个设备进行操作
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2008-09-10 11:03
默认的是过滤设备,你得下传,所以你需要创建个自己的设备和联接和自己的应用通信,道理就跟SFILTER 和FILESPY的关系一样.
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
rain0412
驱动牛犊
驱动牛犊
  • 注册日期2006-01-23
  • 最后登录2012-08-18
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望201点
  • 贡献值0点
  • 好评度42点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-09-10 11:15
谢谢了,我先创建了一个自己的带符号链接的设备后,没有放到设备堆栈(没有调用Attach),还如同KbFilter.c一样创建了一个过滤设备,这个设备放到了设备堆栈,我用CreateFile获得句柄,用DeviceIoControl调用,这个IOCTL放到如果就是我自己用后就结束,我可以完成,但我想把IOCTL处理后下传到Kbdclass的内部IOCTL,这给地方就不太明白,老大,能不能帮帮忙了
游客

返回顶部