想请问各位CreateFile 读取\\.\c: 为什么得不到句柄

小曦子 2010-04-18 12:13:46
想请问各位CreateFile 读取\\.\c: 为什么得不到句柄

HANDLE diskC = NULL;
sprintf(drvName, "\\\\.\\e:");
diskC = CreateFile(drvName,
GENERIC_READ,
FILE_SHARE_READ,
0,
OPEN_EXISTING,
0,
0);
得不到diskC的句柄 ,,调试后发向指向0xFFFFFFFF
读取的时候没内容
...全文
197 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
小曦子 2010-04-18
  • 打赏
  • 举报
回复
是其他的盘符,我想直接读取C、d、e,然后自己直接解析文件,可是就是知道用什么方法,你说的也只是读取MBR的,难道非得通过相加么,我用winhex好象可以直接读取出各盘中的引导扇区,只是不知道它是什么方法可以实现读取
arong1234 2010-04-18
  • 打赏
  • 举报
回复
123的意思是不可访问的启动盘
你这个i盘是不是当前启动盘?
[Quote=引用 4 楼 ytfsse 的回复:]
\\.\e格式化后。GetLastError得到得错误是123,我读取\\\\.\\PhysicalDrive0可以正常得到MBR,可是现在想读取\\\\.\\i就都不可以
[/Quote]
小曦子 2010-04-18
  • 打赏
  • 举报
回复
读取的也是MBR啊,怎么可以读取C盘符的呀,难道直接通过相加么,寻找分区么,还是有可以直接读取的,我用winhex就可以直接读取某个盘符,它是用什么方法实现的
小曦子 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 arong1234 的回复:]
When opening a physical drive x, the lpFileName string should be the following form: \\.\PHYSICALDRIVE<x>. Hard disk numbers start at 0 (zero). The following table shows some examples of physical driv……
[/Quote]
谢谢你,用你介绍的可以了,可是我有点不懂,为何读取\\\\.\c:这样不可以,
\\.\PHYSICALDRIVE0 就可以呢,他们与盘符如何对应,还有我C盘是主分区,其他都是扩展的逻辑分区
arong1234 2010-04-18
  • 打赏
  • 举报
回复
这种格式是不允许的把,你应该还是用physicalDrive<x>形式的
[Quote=引用 4 楼 ytfsse 的回复:]
\\.\e格式化后。GetLastError得到得错误是123,我读取\\\\.\\PhysicalDrive0可以正常得到MBR,可是现在想读取\\\\.\\i就都不可以
[/Quote]
小曦子 2010-04-18
  • 打赏
  • 举报
回复
为什么不支持,我明明是管理员权限,可是读取引导扇区MBR都可以,怎么读这个C盘就不可以
arong1234 2010-04-18
  • 打赏
  • 举报
回复
When opening a physical drive x, the lpFileName string should be the following form: \\.\PHYSICALDRIVE<x>. Hard disk numbers start at 0 (zero). The following table shows some examples of physical drive strings.

String Meaning
\\.\PHYSICALDRIVE0 Opens the first physical drive.
\\.\PHYSICALDRIVE2 Opens the third physical drive.
arong1234 2010-04-18
  • 打赏
  • 举报
回复
32, ERROR_NOT_SUPPORT,不允许你这么使用
你要打开什么?C盘根目录?还是C盘自己?
小曦子 2010-04-18
  • 打赏
  • 举报
回复
\\.\e格式化后。GetLastError得到得错误是123,我读取\\\\.\\PhysicalDrive0可以正常得到MBR,可是现在想读取\\\\.\\i就都不可以
小曦子 2010-04-18
  • 打赏
  • 举报
回复
GetLastError查看是32的错误
arong1234 2010-04-18
  • 打赏
  • 举报
回复
哪怎么可能对!!!

楼主应该调用GetLastError看看错误时什么
[Quote=引用 1 楼 jackyjkchen 的回复:]
不要打那么多的\,直接\\.\c试试
[/Quote]
jackyjkchen 2010-04-18
  • 打赏
  • 举报
回复
不要打那么多的\,直接\\.\c试试
arong1234 2010-04-18
  • 打赏
  • 举报
回复
这个我也不怎么懂[Quote=引用 12 楼 ytfsse 的回复:]
是其他的盘符,我想直接读取C、d、e,然后自己直接解析文件,可是就是知道用什么方法,你说的也只是读取MBR的,难道非得通过相加么,我用winhex好象可以直接读取出各盘中的引导扇区,只是不知道它是什么方法可以实现读取
[/Quote]
小曦子 2010-04-18
  • 打赏
  • 举报
回复

就象上面这张图一样,winhex读取的

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧