我想从驱动器处理C:/.我可以通过以下方式从磁盘获取句柄:
HANDLE hd = CreateFile("\\\\.\\PhysicalDrive0", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, NULL);
Run Code Online (Sandbox Code Playgroud)
如何访问磁盘分区?
使用此代码时:
HANDLE hd = CreateFile("\\.\C", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, NULL);
Run Code Online (Sandbox Code Playgroud)
并使用GetLastError()错误代码是123.
ERROR_INVALID_NAME
123(0x7B)
文件名,目录名或卷标语法不正确.
来自Microsoft doc: image
但不行!
提前致谢.
您应该用来打开卷的名称是C:,并确保反斜杠被适当地转义.
HANDLE hd = CreateFile("\\\\.\\C:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, NULL);
Run Code Online (Sandbox Code Playgroud)
请注意,除非以管理员权限运行exe,否则您可能会收到错误5(拒绝访问).