fenghaifu
驱动牛犊
驱动牛犊
  • 注册日期2005-01-17
  • 最后登录2008-06-24
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1704回复:6

关于ddk中的kbfiltr例子和应用程序通讯问题

楼主#
更多 发布于:2005-03-23 20:02
我想把kbfiltr例子做成能用应用程序通信的,看例子说明说要使用IRP_MJ_DEVICE_CONTROL和应用程序通信的话,要创建另外一个设备。我想知道怎么创建啊?哪位高手能指点一下。谢谢。

最新喜欢:

threebagsthreeb...
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-24 09:37
我想把kbfiltr例子做成能用应用程序通信的,看例子说明说要使用IRP_MJ_DEVICE_CONTROL和应用程序通信的话,要创建另外一个设备。我想知道怎么创建啊?哪位高手能指点一下。谢谢。

可以不用创建设备,找个在IRP_MJ_DEVICE_CONTROL中键盘驱动不用的子功能号加入自己的处理代码就可以了。
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
fenghaifu
驱动牛犊
驱动牛犊
  • 注册日期2005-01-17
  • 最后登录2008-06-24
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-24 19:58
我试了ddk中得kbfiltr例子不行,怎么都进不了控制程序中。我下了ctrl2cap,解决了。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-25 08:50
我试了ddk中得kbfiltr例子不行,怎么都进不了控制程序中。我下了ctrl2cap,解决了。

这两个程序其实都可以,ctrl2cap功能弱一些,是在请求完成后查看修改,而kbfiltr在请求来到时处理,可以做更多工作,包括增加丢弃修改等等操作
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
shenming365
驱动牛犊
驱动牛犊
  • 注册日期2004-04-08
  • 最后登录2008-06-27
  • 粉丝0
  • 关注0
  • 积分157分
  • 威望18点
  • 贡献值0点
  • 好评度13点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-04-19 13:50
我也想使用IRP_MJ_DEVICE_CONTROL和应用程序通信

如果在Dispatch中
IoSkipCurrentIrpStackLocation( Irp );
return IoCallDriver( devExt->TopOfStack, Irp );
我的CreateFile总是返回拒绝访问.

如果在Dispatch中
IoCompleteRequest(Irp, IO_NO_INCREMENT );
return STATUS_SUCCESS;
我的CreateFile返回成功,可以DeviceIoControl.
但过滤功能又不起作用了
该如何弄???????

一个驱动只能创建一个设备吗???
www.software168.com
nobounded
驱动小牛
驱动小牛
  • 注册日期2003-08-14
  • 最后登录2011-07-07
  • 粉丝0
  • 关注0
  • 积分360分
  • 威望258点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-04-20 13:45
可以创建多个设备,我是新手,什么叫ctrl2cap,能不能解释一下如何实现的?
shenming365
不明白你的意思?createfile 跟dispatch中的代码有关系吗?
keyia
驱动牛犊
驱动牛犊
  • 注册日期2005-03-16
  • 最后登录2008-06-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-06-08 15:16
在dispath中判断一下

如果deviceobject是你创建的controldevice那么
IoCompleteRequest(Irp, IO_NO_INCREMENT );
return STATUS_SUCCESS;

如果是其他情况就
IoSkipCurrentIrpStackLocation( Irp );
return IoCallDriver( devExt->TopOfStack, Irp );



发表于: 2005/4/19 - 13:50
我也想使用IRP_MJ_DEVICE_CONTROL和应用程序通信

如果在Dispatch中
IoSkipCurrentIrpStackLocation( Irp );
return IoCallDriver( devExt->TopOfStack, Irp );
我的CreateFile总是返回拒绝访问.

如果在Dispatch中
IoCompleteRequest(Irp, IO_NO_INCREMENT );
return STATUS_SUCCESS;
我的CreateFile返回成功,可以DeviceIoControl.
但过滤功能又不起作用了
该如何弄???????

一个驱动只能创建一个设备吗???
 
游客

返回顶部