gpt4 book ai didi

c - 使用 ReadFile 读取整个 PhysicalDrive 内容

转载 作者:行者123 更新时间:2023-11-30 20:14:26 28 4
gpt4 key购买 nike

我对 C 相当陌生,我正在尝试编写一个小型应用程序来读取驱动器的全部原始内容。

这是我的代码;

int main(int argc, char *argv[]) {
HANDLE hFile;
DWORD dwBytesRead;
char buff[512];

hFile = CreateFile("\\\\.\\PhysicalDrive2", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, 0);

if(hFile == INVALID_HANDLE_VALUE){
printf("%d",GetLastError());
return;
}

SetFilePointer(hFile, 512*0, NULL, FILE_BEGIN);
ReadFile(hFile, buff, 512, &dwBytesRead, NULL);
CloseHandle(hFile);

return 0;
}

如何将 ReadFile 放入循环中以读取驱动器上的所有数据?我最终需要将缓冲区的内容保存到磁盘。

谢谢

最佳答案

循环可能如下所示:

hFile = CreateFile(...);
if (hFile == INVALID_HANDLE_VALUE)
{
// handle error
}

while (true)
{
unsigned char buff[32768]; // needs to be a multiple of sector size
DWORD dwBytesRead;
if (!ReadFile(hFile, buff, sizeof buff, &dwBytesRead, NULL))
{
// handle error
}
if (dwBytesRead == 0)
{
break; // we reached the end
}
// do something with the dwBytesRead that were read
}

CloseHandle(hFile);

关于c - 使用 ReadFile 读取整个 PhysicalDrive 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26285145/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com