2010-04-24 5 views

ответ

5

This page, кажется, есть некоторые важные сведения по этой теме:

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

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

The documentation of CreateFile также предлагает некоторые подсказки:

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

1

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

Я не несу никакой ответственности за повреждения вызваны :-)

+0

У меня сложилось впечатление, что @user хотел * прямой * доступ к диску. –

+0

@John: Вы имеете в виду, что он может вообще обойти Windows? При открытии физического диска у вас есть прямой доступ к его содержимому ...это не пайка вашего собственного контроллера SATA, но он находится на более низком уровне, чем обычно люди :-) Я уверен, что в комплекте драйверов для Windows есть образцы для драйверов дисков, если это помогает. –

Смежные вопросы