首页
社区
课程
招聘
win7 驱动 无法解决的问题
发表于: 2012-6-19 17:37 2031

win7 驱动 无法解决的问题

2012-6-19 17:37
2031
// 本人实验的一个简单的网址过滤驱动程序, 其中用到 ipfltdrv.sys 驱动程序
// 运行在 XP下正常。但是在 win7 出了问题,在调用iocalldriver之后提示0xc000000d错误(参数无效),但是两个参数都有具体的值。
//具体请看下面主要代码:
//
//
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,STANDARD_RIGHTS_ALL, &ipFileObject, &ipDeviceObject);
if(NT_SUCCESS(status))
{
    filterData.ExtensionPointer = filterFunction;
    KeInitializeEvent(&event, NotificationEvent, FALSE);

    // 经过跟踪,问题就处在下面这个 IoBuildDeviceIoControlRequest
    // 在WIN/XP 下运行,很正常。 WIN7 就有问题。函数执行结果差别在
    //      
    //  XP 下: ioStatus.Status = 0
    //  win7 下 ioStatus.Status = 8 (不知道这代码啥意思?)
    //  紧接着下面的 IoCallDriver 的返回也不一样,
    //  应该是IoBuildDeviceIoControlRequest 有问题引起
    //  IoCallDriver 返回
    //   xp   下 status = 0
    //   win7 下 status = 0xc000000d ( 参数无效)
    //
    //  不知道win7 和 xp 有啥区别?该如何处理?
    //
    irp = IoBuildDeviceIoControlRequest(IOCTL_PF_SET_EXTENSION_POINTER,
     ipDeviceObject,
     (PVOID) &filterData,
     sizeof(PF_SET_EXTENSION_HOOK_INFO),
     NULL,
     0,
     FALSE,
     &event,
     &ioStatus);

    if(irp != NULL)
    {
      status = IoCallDriver(ipDeviceObject, irp);
      //
      // xp   下 status = 0
      // win7 下 status = 0xc000000d
      //
      //
      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;
}

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 67
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
win7不再支持ipfltdrv了
2012-10-9 10:57
0
游客
登录 | 注册 方可回帖
返回
//