c++ - 如何使用 CreateFile API 打开分区?

标签 c++ winapi

我想从驱动器 C:/ 获取句柄。我可以通过以下方式从磁盘获取句柄:

HANDLE hd = CreateFile("\\\\.\\PhysicalDrive0", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, NULL);

如何访问磁盘分区?

使用此代码时:

HANDLE hd = CreateFile("\\.\C", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, NULL);

并使用 GetLastError() 错误代码为 123。

ERROR_INVALID_NAME

123 (0x7B)

The filename, directory name, or volume label syntax is incorrect.

来自微软文档: image

但不起作用!

提前致谢。

最佳答案

打开卷时应使用的名称是 C: 并确保正确转义反斜杠。

HANDLE hd = CreateFile("\\\\.\\C:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, 0, NULL);

请注意,您可能会遇到错误 5(访问被拒绝),除非该 exe 以管理员权限运行。

关于c++ - 如何使用 CreateFile API 打开分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36881006/

相关文章:

c++ - 滚动菜单在 C++ 中不起作用

delphi - 如何为 VBScript 错误获取更具声明性的字符串

c# - 如何获取隐藏的 Excel 应用程序实例的 ProcessID (PID)

c++ - 想要创建打开控制台并将用户输入作为命令的应用程序

c++ - 命名空间 'atomic' 中没有名为 'std' 的类型

c++ - 在哪里可以找到构建 DirectShow BaseClasses 的项目?

windows - DOS MZ 二进制文件可以有 VERSIONINFO 元数据吗?

c++ - C vs C++——跨平台

c++ - 在 C++ 中释放指针的 std::vector 的正确方法是什么?

c++ - 为什么这些 vector 不相等?