i66i88
驱动牛犊
驱动牛犊
  • 注册日期2007-09-16
  • 最后登录2018-05-04
  • 粉丝0
  • 关注0
  • 积分67分
  • 威望423点
  • 贡献值1点
  • 好评度47点
  • 原创分0分
  • 专家分0分
阅读:2252回复:1

IoGetDeviceObjectPointer 使用中的问题

楼主#
更多 发布于:2010-02-07 11:06
    void GetKeyboardClass0()
    {
        PDEVICE_OBJECT pdo=0;
        UNICODE_STRING KeyboardDeviceName;
        PFILE_OBJECT pfo=0;
            PDRIVER_OBJECT pdrv=0;
        NTSTATUS status= STATUS_UNSUCCESSFUL;
        RtlInitUnicodeString( &KeyboardDeviceName, L"\\Device\\KeyboardClass0");

        status = IoGetDeviceObjectPointer( &KeyboardDeviceName, FILE_ALL_ACCESS, &pfo, &pdo );

        if (NT_SUCCESS(status))
        {
            ObDereferenceObject(pfo);
                pdrv= pdo->DriverObject;
                        DbgPrint( " %ws",pdrv->DriverName.Buffer);  //   "\Driver\Ctrl2cap"
        }
    }


本来期望结果是 KeyboardClass0 ,但当安装了键盘过滤驱动 Ctrl2cap 后 ,得到的结果是 Ctrl2cap .
在安装了ctrl2cap 的情况下 ,怎样写才能得到  KeyboardClass0  ?

谢谢。谢谢。




znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2010-02-07 14:41
这个函数是得到你给的名字的设备栈的顶端设备,当然是过滤驱动了
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
游客

返回顶部