chenjinyuan64
驱动牛犊
驱动牛犊
  • 注册日期2011-02-25
  • 最后登录2011-11-30
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3269回复:4

ipfltdrv.sys 在win7下使用的问题,快一个多月了没解决,急盼高手出现帮看看!

楼主#
更多 发布于:2011-03-22 11:38
// 本人写一个简单的网址过滤驱动程序, 其中用到 ipfltdrv.sys 驱动程序
// 运行在 XP下正常。但是在 win7 出了问题,具体请看下面主要代码:
//
//

NTSTATUS SetFilterFunction(PacketFilterExtensionPtr filterFunction)
{
NTSTATUS status = STATUS_SUCCESS, waitStatus=STATUS_SUCCESS;
UNICODE_STRING filterName;
PDEVICE_OBJECT ipDeviceObject=NULL;
PFILE_OBJECT ipFileObject=NULL;

PF_SET_EXTENSION_HOOK_INFO filterData;

KEVENT event;
IO_STATUS_BLOCK ioStatus;
PIRP irp;

    
RtlInitUnicodeString(&filterName, DD_IPFLTRDRVR_DEVICE_NAME);

status = IoGetDeviceObjectPointer(&filterName,
  SYNCHRONIZE|GENERIC_READ|GENERIC_WRITE,
  &ipFileObject, &ipDeviceObject);

// 1. IoGetDeviceObjectPointer XP 和 win7  正常
//
//


if(NT_SUCCESS(status))
{
   filterData.ExtensionPointer = filterFunction;
   KeInitializeEvent(&event, NotificationEvent, FALSE);

   irp = IoBuildDeviceIoControlRequest(IOCTL_PF_SET_EXTENSION_POINTER,
    ipDeviceObject,
    (PVOID) &filterData,
    sizeof(PF_SET_EXTENSION_HOOK_INFO),
    NULL,
    0,
    FALSE,
    &event,
    &ioStatus);
// 2. IoBuildDeviceIoControlRequest XP 和 win7  正常
//
//


   if(irp != NULL)
   {
     status = IoCallDriver(ipDeviceObject, irp);

     // 3. IoCallDriver XP 和 win7  不一样了:
     //
     // xp下运行返回 status = 0 成功
     // win7 下运行返回 status = 0xc000000d
     // 经查, 0xc000000d 含义为无效参数,  可是跟踪两个参数
     // ipDeviceObject, irp 没什么异样, 怎么就无效了呢!?
     // 因为这函数出错,
     // 这过滤函数就不起作用了, 查了很久, 都不知道啥原因?
     //
     if (status == STATUS_PENDING)
         waitStatus = KeWaitForSingleObject(&event, Executive, KernelMode, FALSE, NULL);
     status = ioStatus.Status;
    }
        
   else
     status = STATUS_INSUFFICIENT_RESOURCES;

  if(ipFileObject != NULL)
    ObDereferenceObject(ipFileObject);
        
   ipFileObject = NULL;
   ipDeviceObject = NULL;
}
    
    return status;
}
阿宝
jscool520
驱动牛犊
驱动牛犊
  • 注册日期2009-03-13
  • 最后登录2012-12-20
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望101点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2011-03-22 12:53
楼主,该过滤驱动在win7下已不再支持,应改用Windows Filtering Platform Callout Drivers
或者NDIS Filter Drivers来替代。
jscool520
驱动牛犊
驱动牛犊
  • 注册日期2009-03-13
  • 最后登录2012-12-20
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望101点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2011-03-22 12:55
不过很感兴趣你是怎样做到在xp下使用该驱动过滤网址的!可否交流一下
chenjinyuan64
驱动牛犊
驱动牛犊
  • 注册日期2011-02-25
  • 最后登录2011-11-30
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2011-08-02 12:56
回 2楼(jscool520) 的帖子
对不起,才看到你的留言。很高兴能认识你,我初学写驱动,特希望有机会请教你。我的qq 674806179.  email: chenjinyuan64@163.com , 电话 13601190395  陈金源。 我用 ipfltdrv.sys 只做了简单的网址过滤。win7 就不好用了。 期盼你的回复
阿宝
chenjinyuan64
驱动牛犊
驱动牛犊
  • 注册日期2011-02-25
  • 最后登录2011-11-30
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望41点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2011-08-02 12:57
回 1楼(jscool520) 的帖子
对不起,才看到你的留言。很高兴能认识你,我初学写驱动,特希望有机会请教你。我的qq 674806179.  email: chenjinyuan64@163.com , 电话 13601190395  陈金源。 我用 ipfltdrv.sys 只做了简单的网址过滤。win7 就不好用了。 期盼你的回复
阿宝
游客

返回顶部