Прямой доступ к жесткому диску? - PullRequest
3 голосов
/ 24 апреля 2010

Мне было интересно, как работает доступ к жесткому диску. Например, как я могу просмотреть / изменить сектора? Я нацеливаюсь на Windows, если это поможет. Спасибо

Ответы [ 3 ]

5 голосов
/ 24 апреля 2010

Эта страница , кажется, содержит некоторую соответствующую информацию по этому вопросу:

Вы можете открыть физический или логический диск с помощью CreateFile () интерфейс прикладного программирования (API) с указанными именами устройств что у вас есть соответствующий доступ права на диск (то есть вы должны быть администратором). Вы должны использовать оба CreateFile () FILE_SHARE_READ и FILE_SHARE_WRITE флаги, чтобы получить доступ к диску.

Как только логический или физический диск был открыт, вы можете выполнить прямой ввод / вывод данных на весь привод. При выполнении прямого диска I / O, вы должны искать, читать и писать на кратные размеры секторов устройство и на границах секторов. Вызов DeviceIoControl () используя IOCTL_DISK_GET_DRIVE_GEOMETRY, чтобы получить количество байтов на сектор, количество секторов, секторов на дорожку и т. д. вперед, чтобы вы могли вычислить размер буфера, который вам понадобится.

Документация CreateFile также предлагает некоторые подсказки:

Вы можете использовать функцию CreateFile, чтобы открыть физический диск или том, который возвращает дескриптор устройства хранения с прямым доступом (DASD), который может быть используется с функцией DeviceIoControl. Это позволяет вам получить доступ к диск или том напрямую, например такие метаданные диска как раздел Таблица. Тем не менее, этот тип доступа также предоставляет дисковод или объем до потенциальной потери данных, потому что неправильная запись на диск использование этого механизма может сделать его содержимое недоступным для операционная система. Чтобы обеспечить целостность данных, обязательно станьте знаком с DeviceIoControl и поведением других API иначе с дескриптором прямого доступа, в отличие от дескриптора файловой системы.

1 голос
/ 24 апреля 2010

Вы можете открыть логический том (например, c: drive) или физический диск с помощью функции win32 CreateFile (). С возвращенным дескриптором вы можете читать и записывать сектора по мере необходимости. Эта страница в MSDN должна помочь вам начать: Функция CreateFile

Я не несу ответственности за причиненный ущерб: -)

0 голосов
/ 24 апреля 2010

STXXL может вас заинтересовать: http://stxxl.sourceforge.net/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...