Читать байты жесткого диска

0

Используя шестнадцатеричный редактор HxDen, вы можете читать (и редактировать) байты на жестком диске или USB-ключ или RAM. То есть, можно прочитать/изменить первый байт на жестком диске.

Я понимаю, как читать байты из файла с помощью C++, но мне было интересно, как это можно сделать для жесткого диска.

Чтобы сделать это простым, учитывая положительное целое число n, как я могу прочитать номер байта n на жестком диске с помощью C++? (Я хотел бы сделать C++, но если есть более простой способ, я хотел бы услышать об этом.)

Я использую MinGW для Windows 7, если это имеет значение.

  • 0
    Может быть, это поможет .. stackoverflow.com/questions/7289453/…
  • 0
    @Half_Baked Он на Windows 7 (и да, это важно )
Показать ещё 5 комментариев
Теги:
read-write
hard-drive

1 ответ

8

Он задокументирован в статье библиотеки MSDN для CreateFile, раздел "Физические диски и тома". Этот код хорошо работал для прямого чтения диска 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 (Access denied).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню