【问题标题】:Read bytes of hard drive读取硬盘的字节数
【发布时间】:2014-01-10 14:25:33
【问题描述】:

使用十六进制编辑器HxDen 可以读取(和编辑)硬盘驱动器或 USB 密钥或 RAM 上的字节。也就是说,可以读取/更改硬盘上的第一个字节。

我知道如何read the bytes from a file using C++,但我想知道如何为硬盘做到这一点。

为了简单起见,给定一个正整数 n,我如何使用 C++ 读取硬盘驱动器上的字节数 n? (我想做 C++,但如果有更简单的方法,我想听听。)

如果这很重要,我在 Windows 7 上使用 MinGW

【问题讨论】:

标签: c++ windows hard-drive read-write


【解决方案1】:

CreateFile 的 MSDN 库文章中记录了它,“物理磁盘和卷”部分。该代码可以很好地直接读取 C: 驱动器:

HANDLE hdisk = CreateFile(L"\\\\.\\C:", 
                          GENERIC_READ, 
                          FILE_SHARE_READ | FILE_SHARE_WRITE, 
                          nullptr, 
                          OPEN_EXISTING, 
                          0, NULL);
if (hdisk == INVALID_HANDLE_VALUE) {
    int err = GetLastError();
    // report error...
    return -err;
}

LARGE_INTEGER position = { 0 };
BOOL ok = SetFilePointerEx(hdisk, position, nullptr, FILE_BEGIN);
assert(ok);

BYTE buf[65536];
DWORD read;
ok = ReadFile(hdisk, buf, 65536, &read, nullptr);
assert(ok);
// etc..

需要管理员权限,您必须在 Win7 上运行提升权限的程序,否则您将收到错误 5(拒绝访问)。

【讨论】:

    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 2017-08-17
    • 2012-07-09
    • 2010-12-02
    • 2013-07-15
    • 2011-12-26
    • 2012-05-15
    相关资源
    最近更新 更多