vancaho
驱动牛犊
驱动牛犊
  • 注册日期2004-04-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分574分
  • 威望100点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分0分
阅读:3690回复:4

求助,驱动中能自己发送IRP_MN_QUERY_ID查询BusQueryInstanceID不?

楼主#
更多 发布于:2007-04-13 10:44
我使用Diskperf实现一个磁盘上层过滤驱动程序,在AddDevice例程中使用IrpBuileSynchronFsdRequest创建一个同步的IRP_MN_PNP请求
然后IoGetNextStackLocation()
将MinorFunction设置为IRP_MN_QUERY_ID,参数设置为BusQueryInstanceId
IoCallDriver返回Status_success
但是Irp->ioStatus.Information为0,不知哪位大侠能帮忙讨论一下
vancaho
驱动牛犊
驱动牛犊
  • 注册日期2004-04-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分574分
  • 威望100点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-04-13 23:25
我的查询InstanceID的代码是这样的

//得到设备的Instance ID;
   KeInitializeEvent( &event, NotificationEvent, FALSE );

    irp = IoBuildSynchronousFsdRequest( IRP_MJ_PNP,
                                        PhysicalDeviceObject,
                                        NULL,
                                        0,
                                        NULL,
                                        &event,
                                        &ioStatusBlock );

    if (irp == NULL)
    {
        status = STATUS_INSUFFICIENT_RESOURCES;
        return status;
    }
    
    irpStack = IoGetNextIrpStackLocation( irp );

    irpStack->MinorFunction = IRP_MN_QUERY_ID;

    //查询设备的INSTANCE ID
    irpStack->Parameters.QueryId.IdType=BusQueryInstanceID;


    //初始化设备的响应
    irp->IoStatus.Status = STATUS_NOT_SUPPORTED ;

    status = IoCallDriver( PhysicalDeviceObject, irp );
    if (status == STATUS_PENDING)
  {
        KeWaitForSingleObject( &event, Executive, KernelMode, FALSE, NULL );
        status = ioStatusBlock.Status;
    }

   if(NT_SUCCESS(irp->IoStatus.Status))
  {
    RtlStringCbCopyW(pInstanceID,nIDLen,(PWCHAR)ioStatusBlock.Information);
   }
程序运行到这里的时候irp->IoStatus.Status=0;
有的时候能正确获取U盘的InstanceID,此时ioStatusBlock.Information是一个WCHAR类型的值
但有的时候ioStatusBlock.Status=0x00;
ioStausBlock.Information=0x00000190
有的时候ioStatusBlock.Information为0x00000000;
而Windows设备管理器中却有InstanceID,
请问各位大虾,这是怎么回事?
tooflat
论坛版主
论坛版主
  • 注册日期2002-07-08
  • 最后登录2014-03-11
  • 粉丝2
  • 关注0
  • 积分1007分
  • 威望551点
  • 贡献值3点
  • 好评度476点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-04-14 18:31
在START DEVICE后试试
vancaho
驱动牛犊
驱动牛犊
  • 注册日期2004-04-26
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分574分
  • 威望100点
  • 贡献值0点
  • 好评度56点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-04-15 09:22
在START_DEVICE后面试了,也不行
aqiuzaizai
驱动牛犊
驱动牛犊
  • 注册日期2007-02-02
  • 最后登录2008-04-02
  • 粉丝0
  • 关注0
  • 积分180分
  • 威望69点
  • 贡献值0点
  • 好评度68点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-04-30 17:32
有同样问题,关心中...
竹密何妨流水过 山高岂碍野云飞
游客

返回顶部