superba
驱动牛犊
驱动牛犊
  • 注册日期2001-07-20
  • 最后登录2006-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1788回复:4

关于IoBuildDeviceIoControlRequest,很菜的

楼主#
更多 发布于:2001-07-26 17:49
我参考了DDK的HOOK例子,编了个TCP钩子,采用函数
deviceInfo->callback.ExtensionPointer= DropTcpPackets(为过滤TCP包的函数地址);
ipFilterIRP=IoBuildDeviceIoControlRequest(IOCTL_PF_SET_EXTENSION_POINTER,
 deviceInfo->filterObject ,
 &deviceInfo->callback ,
sizeof(deviceInfo>callback),                                    NULL,0,FALSE,NULL,NULL);能成功返回,并且能过滤掉所有TCP包,但是当我要卸载时(在UNLOAD里实现)
deviceInfo->callback.ExtensionPointer= NULL;
ipFilterIRP=IoBuildDeviceIoControlRequest(IOCTL_PF_SET_EXTENSION_POINTER,
  deviceInfo->filterObject ,
 &deviceInfo->callback ,
sizeof(deviceInfo->callback),
                                              NULL,0,FALSE,&event,NULL);
KeWaitForSingleObject(&event,Executive, KernelMode, FALSE, NULL)无法返回,也就是上面IoBuildDeviceIoControlRequest函数的事件无法SET,脑袋疼啊!!!!!!
superba
驱动牛犊
驱动牛犊
  • 注册日期2001-07-20
  • 最后登录2006-02-28
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-07-26 18:21
原来是这样,这个问题太菜,建议斑竹删除该帖!!!!!
bie_zm
驱动牛犊
驱动牛犊
  • 注册日期2002-10-16
  • 最后登录2002-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-28 20:32
你好啊!
我更菜的啊! :( 你能把你的例子发给我吗?(bie_zm@163.com)
谢谢!
你上面的是什么原因?
我给最高分你!
bbear
驱动小牛
驱动小牛
  • 注册日期2002-08-20
  • 最后登录2009-04-16
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-29 09:31

ipFilterIRP=IoBuildDeviceIoControlRequest(IOCTL_PF_SET_EXTENSION_POINTER,
deviceInfo->filterObject ,
&deviceInfo->callback ,
sizeof(deviceInfo->callback),
NULL,0,FALSE,&event,NULL);

之後
bie_zm
驱动牛犊
驱动牛犊
  • 注册日期2002-10-16
  • 最后登录2002-11-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-29 11:00
谢谢2位大侠! :D
游客

返回顶部