首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读取硬盘的字节数

读取硬盘的字节数
EN

Stack Overflow用户
提问于 2013-12-22 09:47:26
回答 1查看 3.5K关注 0票数 0

使用十六进制编辑器HxDen,可以读取(和编辑)硬盘或U盘或内存中的字节。也就是说,可以读取/更改硬盘上的第一个字节。

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

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

如果有必要的话,我在Windows7上使用MinGW

EN

回答 1

Stack Overflow用户

发布于 2013-12-22 10:29:20

它在CreateFile的MSDN Library文章“物理磁盘和卷”一节中有说明。这段代码可以很好地直接读取C:驱动器:

代码语言:javascript
复制
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(访问被拒绝)。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20725397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档