使用十六进制编辑器HxDen,可以读取(和编辑)硬盘或U盘或内存中的字节。也就是说,可以读取/更改硬盘上的第一个字节。
我知道如何read the bytes from a file using C++,但我想知道如何为硬盘做这件事。
为了简单起见,给定一个正整数n,我如何使用C++读取硬盘上的字节数n?(我想做C++,但如果有更简单的方法,我想听听。)
如果有必要的话,我在Windows7上使用MinGW。
发布于 2013-12-22 10:29:20
它在CreateFile的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(访问被拒绝)。
https://stackoverflow.com/questions/20725397
复制相似问题