使用CreateFile时返回INVALID_HANDLE_VALUE(“\\。\ C:”,...)

时间:2015-11-12 07:51:43

标签: windows winapi

代码在这里

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

1 个答案:

答案 0 :(得分:2)

感谢@Barmak Shemirani和@Hans Passant,

我有一个可行的代码

HANDLE hDrive = CreateFile(_T("\\\\.\\PhysicalDrive0"), GENERIC_READ, 
    FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, 
    NULL, 
    OPEN_EXISTING, 
    FILE_ATTRIBUTE_READONLY,///*FILE_FLAG_WRITE_THROUGH |*/FILE_FLAG_NO_BUFFERING, 
    NULL);

HANDLE hDrive = CreateFile(_T("\\\\.\\D:"), GENERIC_READ|GENERIC_WRITE, 
    FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, 
    NULL, 
    OPEN_EXISTING, 
    FILE_ATTRIBUTE_READONLY,///*FILE_FLAG_WRITE_THROUGH |*/FILE_FLAG_NO_BUFFERING, 
    NULL);
DWORD dwError = GetLastError();

assert(hDrive != INVALID_HANDLE_VALUE);
cin.get();

需要以管理员身份运行

相关问题