RSS订阅信息安全技术跟踪与研究:技术、平台、会议、论文、产业
你现在的位置:首页 / 技术积累 / 正文

Windows内核中获取全路径:IoQueryFileDosDeviceName、ObQueryNameString

0 技术积累 | 2015年3月30日
转载申明:本站原创,欢迎转载。但转载时请保留原文地址。
原文地址:http://www.vonwei.com/post/kernelFullPath.html
驱动从XP迁移到2000下运行,是需要替换一些函数。内核中一不小心就蓝了,还是挺痛苦的。

在进行windows内核驱动开发时,经常需要从文件或者进程句柄中来获取全路径。

使用最频繁的函数是IoQueryFileDosDeviceName,查询MSDN发现,该函数只在Windows XP之后才有。如果你的驱动程序还必须要在Windows 2000等更低版本的内核中使用,这个函数显然就会出错。
那么,在Windows 2000下怎样找全路径呢,查询MSDN后发现ObQueryNameString这个方法,在2000系统内核中是可以使用的。
这两个函数使用时在内核中都要自己先申请,否则,DDK编译时会通不过。
另外,IoQueryFileDosDeviceName获取的是正常文件路径,如C:\notepad.exe;而ObQueryNameString获取的是最原始的表达方式,如\Device\HanddiskVolume1\notepad.exe,需要进行转换。
另外,获取Windows版本信息(如判断系统是XP,2000, 2003等)通常在内核中使用RtlGetVersion函数即可达到;

但在xp及2003中该函数能链接通过,在2000下编译能通过,链接时也出现LNK 2001错误,找不到该函数,不过换成PsGetVersion即可正常工作。




  • ------------------分隔线----------------

  • 如果感兴趣,欢迎关注本站微信号,跟踪最新博文信息,手机微信扫一扫下面的二维码,即可关注!
  • 微月信公众号
  • 推荐您阅读更多有关于“ Windows内核  Windows编程   ”的文章

    请填写你的在线分享代码
    上一篇:如果没有360,还有这些堪称神器的软件可供选择下一篇:Windows编程:Volume设备名到盘符Dos名的转换

    猜你喜欢

    评论列表:

    发表评论

    必填

    选填

    选填

    必填,不填不让过哦,嘻嘻。

    记住我,下次回复时不用重新输入个人信息

    本站介绍
    最近发表
    本年最热文章
    本月最热文章
    网站分类
    文章归档