【发布时间】:2015-11-12 07:51:42
【问题描述】:
代码在这里
HANDLE hDrive = CreateFile(_T("\\\\.\\D:"), GENERIC_READ,
FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,///*FILE_FLAG_WRITE_THROUGH |*/FILE_FLAG_NO_BUFFERING,
NULL);
assert(hDrive != INVALID_HANDLE_VALUE);
我也试过CreateFile(_T("\\\.\D:",...)和OPEN_EXISTING,但也返回INVALID_HANDLE_VALUE。
我打电话给GetLastError(),错误码是5,ERROR_ACCESS_DENIED。
【问题讨论】:
-
您是否查看过GetLastError() 的结果以确定相关的错误代码?
-
谢谢,我去看看
-
尝试
\\\\.\\PhysicalDrive1:而不是\\\\.\\D:或者它可能是PhysicalDrive0,具体取决于驱动器的映射方式。 ps 也OPEN_EXISTING如前所述。 -
程序必须运行提升才能获得对驱动器的原始访问权限。需要 UAC 提升,编辑程序的清单以显示提示。
-
错误代码的最佳快速查找方法是简单地搜索
中的数字。在这种情况下,5 是 ERROR_ACCESS_DENIED,这与 Hans Passant 的分析密切相关。