首页 文章

读取硬盘的字节数

提问于
浏览
0

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

我理解如何read the bytes from a file using C++,但我想知道如何为硬盘做这个 .

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

如果重要的话,我在Windows 7上使用MinGW .

1 回答

  • 8

    有关CreateFile,部分"Physical Disks and Volumes"的MSDN Library文章中对此进行了介绍 . 这段代码很好地直接读取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(访问被拒绝) .

相关问题