Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как побайтно читать с винчестера.

13K
07 октября 2006 года
Isk_Int
16 / / 06.06.2006
Господа Здравствуйте!

Господа профессионалы не раскажите про побайтное чтение информации с винчестера. Очень нужно. Заранее благодарю Вас.
Если можно укажите нужные ссылки.
3
07 октября 2006 года
Green
4.8K / / 20.01.2000
http://forum.codenet.ru/showpost.php?p=131105&postcount=14
Не обращай внимания на преамбулу, суть в конце поста. :)
309
07 октября 2006 года
el scorpio
1.1K / / 19.09.2006
Isk_Int, уточни пожалуйста, тебе что нужно, посекторное чтение логического диска или физического, или может быть, побайтное чтение магнитной поверхности :confused:
13K
08 октября 2006 года
Isk_Int
16 / / 06.06.2006
Извени меня родной Я не точно выразился. Мне нужно побайтное чтение магнитной поверхности. Посоветуй мне что нибудь если тебе не трудно.
Срасибо заранее. Очень благодарен.
309
08 октября 2006 года
el scorpio
1.1K / / 19.09.2006
Уважаемый Isk_Int, не осмелюсь даже предположить зачемможет такое потребоваться?
Если мне память не изменяет, то чтение диска на уровне служебных кодов секторов и их частей (заголовка, области данных, CRC-кода) не реализуется даже через прерывание 13h. Подобное можно выполнить разве что путём прямого программирования дискового контроллера (через порты ввода/вывода).
Не говорю уже про чтение сервометок, использующихся для позиционирования магнитных головок.
По части технической реализации вышеупомянутого прошу не беспокоить - я сам не знаю :)
13K
23 октября 2006 года
Isk_Int
16 / / 06.06.2006
[QUOTE=el scorpio]Уважаемый Isk_Int, не осмелюсь даже предположить зачемможет такое потребоваться?
Если мне память не изменяет, то чтение диска на уровне служебных кодов секторов и их частей (заголовка, области данных, CRC-кода) не реализуется даже через прерывание 13h. Подобное можно выполнить разве что путём прямого программирования дискового контроллера (через порты ввода/вывода).
Не говорю уже про чтение сервометок, использующихся для позиционирования магнитных головок.
По части технической реализации вышеупомянутого прошу не беспокоить - я сам не знаю :)[/QUOTE]
Может Я не прав на счет чтения. Но вопросик, как же тогда работает Scandisk. Если можно ответ.
309
24 октября 2006 года
el scorpio
1.1K / / 19.09.2006
[QUOTE=Isk_Int]Может Я не прав на счет чтения. Но вопросик, как же тогда работает Scandisk. Если можно ответ.[/QUOTE]
ScanDisk выполняет проверку поверхности последовательным чтением данных, содержащихся в секторе. Если дисковый контроллер сообщает об "ошибке чтения" (область данных не совпадает с CRC), то программа записывает эти данные в другой кластер файловой системы.
Более того, современные "винты", после оснащения SMART, вообще изменили понятие "номер сектора" - теперь "логический" сектор диска может располагаться в любой точке физической поверхнности, и ни ОС, ни даже IDE/SATA контроллер об этом и подозревать не будут.

А запись отдельных составляющих сектора произвести невозможно - в противном случае, уже во множестве расплодились бы вирусы, которые "портили" поверхность диска, изменяя область данных без корректировки CRC :(.
13K
24 октября 2006 года
Isk_Int
16 / / 06.06.2006
Пожалуйста изкините меня если я Вам надоела. Просто мне интересно как же тогда работает программа Format Recovery ? Заранее благодарб Вас за все Ваши ответы и за то что Вы терпите меня с моими вопросами.
309
25 октября 2006 года
el scorpio
1.1K / / 19.09.2006
А что она делает?
Если восстанавливает информацию из раздела жёсткого диска, обрабатываемого программой FORMAT, то всё очень просто. Дело в том, что эта программа уже очень долгое время не форматирует жёский диск. Соответственно, для возвращения доступа к информации достаточно восстановить FAT, ROOT и другие служебные области. А это делается анализом информации, считанной посекторно (а не побайтно) - через системное прерывание 13h или аналогичные функции чтения сектора по абсолютному номеру).
Сектор - это минимальная единица дискового пространства, к которой позволено получить доступ средствами OS и BIOS. Более низкоуровневая методика - через прямое программирование портов. Но это очень аппаратно-зависимая операция, к тому же абсолютно недопустимая с точки зрения многозадачности системы.
3
26 октября 2006 года
Green
4.8K / / 20.01.2000
[QUOTE=el scorpio]А это делается анализом информации, считанной посекторно (а не побайтно) - через системное прерывание 13h или аналогичные функции чтения сектора по абсолютному номеру).
[/QUOTE]
Для Windows смотри CreateFile:
[QUOTE=MSDN]
CreateFile
......

Physical Disks and Volumes

[COLOR=Red]You can use the CreateFile function to open a physical disk drive or a volume.[/COLOR] The function returns a handle that can be used with the DeviceIoControl function. This enables you to access the disk's partition table. It is potentially dangerous to do so, since an incorrect write to a disk could make its contents inaccessible. The following requirements must be met for such a call to succeed:


The caller must have administrative privileges. For more information, see Running with Special Privileges.
The dwCreationDisposition parameter must have the OPEN_EXISTING flag.
When opening a volume or floppy disk, the dwShareMode parameter must have the FILE_SHARE_WRITE flag.
When opening a physical drive, x, the lpFileName string should be of the form \\.\PHYSICALDRIVE<x>. Hard disk numbers start at zero. The following table shows some example physical drive strings.

String Meaning
\\.\PHYSICALDRIVE0 Opens the first physical drive.
\\.\PHYSICALDRIVE2 Opens the third physical drive.

For an example showing how to open a physical drive, see Calling DeviceIoControl.

When opening a volume or floppy drive, the lpFileName string should be of the form \\.\<x>:. Do not use a trailing backslash. This would indicate the root directory of the drive. The following table shows some example drive strings.

String Meaning
\\.\A: Opens drive A (floppy drive).
\\.\C: Opens drive C (volume).

You can also open a volume by referring to its volume name. For more information, see Naming a Volume.

Volume handles may be opened as noncached at the discretion of the file system, even when the noncached option is not specified with CreateFile. You should assume that all Microsoft file systems open volume handles as noncached. The restrictions on noncached I/O for files apply to volumes as well.

A file system may or may not require buffer alignment even though the data is noncached. However, if the noncached option is specified when opening a volume, buffer alignment is enforced regardless of the file system on the volume. It is recommended on all file systems that you open volume handles as noncached and follow the noncached I/O restrictions.

[/QUOTE]
309
26 октября 2006 года
el scorpio
1.1K / / 19.09.2006
В общем, как бы то ни было - не существует стандартных функций, позволяющих читать один байт. Минимальный размер передаваемых с диска данных составляет 512 байт - стандартный размер области данных дискового сектора для IBM-совместимых машин
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог