catface
驱动小牛
驱动小牛
  • 注册日期2009-01-11
  • 最后登录2014-03-09
  • 粉丝1
  • 关注1
  • 积分155分
  • 威望1341点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分2分
阅读:3590回复:4

求助 通过\\Device\\HarddiskVolume1获得盘符名

楼主#
更多 发布于:2011-03-17 17:11
尝试使用RtlVolumeDeviceToDosName
但是他需要设备指针
然后我通过ObReferenceObjectByName

到ObReferenceObjectByName这一步就错误了
status = ObReferenceObjectByName (
                        &nameInfo->Volume,
                        OBJ_CASE_INSENSITIVE,
                        NULL,
                        0,
                        IoDriverObjectType,
                        KernelMode,
                        NULL,
                        &DeviceObject );
STATUS c0000024 返回设备类型错误
显示设备类型不正确  IoDriverObjectType IoDeviceObjectType都试过了


catface
驱动小牛
驱动小牛
  • 注册日期2009-01-11
  • 最后登录2014-03-09
  • 粉丝1
  • 关注1
  • 积分155分
  • 威望1341点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分2分
沙发#
发布于:2011-03-17 17:12
      &nameInfo->Volume 为类似 \\Device\\HarddiskVolume1
catface
驱动小牛
驱动小牛
  • 注册日期2009-01-11
  • 最后登录2014-03-09
  • 粉丝1
  • 关注1
  • 积分155分
  • 威望1341点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分2分
板凳#
发布于:2011-03-18 09:07
自己解答吧 很简单的一句代码

RtlInitUnicodeString(&DosName,L"X:\\");
            RtlVolumeDeviceToDosName(Data->Iopb->TargetFileObject-> DeviceObject, &DosName);
            DbgPrint("ParLette is %wZ\n",&DosName);

注意网络上很多范例代码 UNICODE没有分配内存 直接
UNICODE_STRING DosName;
就开始使用了 这样很危险
游客

返回顶部