首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请问如何在驱动中获得某个盘符的接口类型?(是否是USB接口的?) [已结贴,结贴人:shootingstars]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shootingstars
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-19 17:28:09 楼主
    我想得到这个盘符是否是USB接口类型的。。。
    我的代码如下。我可以获取这个盘符的DEVICE_OBJECT对象,问题是如何得到这个对象的接口类型?
    RtlInitUnicodeString(&fileNameUnicodeString,L"\\DosDevices\\C:\\"); 
    InitializeObjectAttributes( &objectAttributes, &fileNameUnicodeString,OBJ_CASE_INSENSITIVE, NULL, NULL );
    ntStatus = ZwCreateFile( &ntFileHandle, SYNCHRONIZE|FILE_ANY_ACCESS,
                                &objectAttributes, &ioStatus, NULL, 0, FILE_SHARE_READ|FILE_SHARE_WRITE,
                                FILE_OPEN,
                                FILE_SYNCHRONOUS_IO_NONALERT|FILE_DIRECTORY_FILE,
                                NULL, 0 );
     
        if( !NT_SUCCESS( ntStatus ) ) {

            DbgPrint("Could not open drive C: %x\n", ntStatus);
        }
        else
        {
        DbgPrint("open drive C: Success!!! handle: %x\n", ntFileHandle); 

        ntStatus = ObReferenceObjectByHandle( ntFileHandle, FILE_READ_DATA,
                                              NULL, KernelMode, &fileObject, NULL );
        if( !NT_SUCCESS( ntStatus )) {

            DbgPrint("Could not get fileobject from handle\n");
            ZwClose( ntFileHandle );
        }
        else
        {
        DbgPrint("Get fileobject from handle Success\n");
       
                    //得到C盘对应的fileObject后,该如何得到C盘的接口类型???
     
        ObDereferenceObject( fileObject );
        ZwClose( ntFileHandle );
        }
        }

    希望各位驱动高手显个身,谢谢各位啦。(或者与上面的代码无关也行,请大家帮我看看如何得到盘符的接口类型,再次谢谢。。。)
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hqin6
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 11:46:161楼 得分:30
    我记得有一个属性的~以前做过类似的开发,给忘了!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • keiy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      7

      5

    发表于:2008-08-20 12:30:352楼 得分:40
    参考一下我以前回的这个
    http://topic.csdn.net/u/20070105/14/8afb1561-a19e-4de2-816d-5caf2bb45352.html
    用WMI是可以判断磁盘接口的(那个是用delphi写的,关于C++调用WMI,网上有资料的)
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • e_sharp
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 14:17:303楼 得分:30
    UP
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • shootingstars
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-21 08:34:004楼 得分:0
    To keiy
        我看了看那个帖子,似乎也不能判断移动硬盘还是U盘啊。并且我的程序在驱动层工作,可以调用WMI吗?
        谢谢。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • keiy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 4

      7

      5

    发表于:2008-08-21 09:16:035楼 得分:0
    WMI可以得到硬盘的(包括U盘)接口类型(USB/IDE/SATA),但的确不能判是移动硬盘还是U盘。
    在驱动层下,WMI是否能用,我也没试过。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved