Читаю с SD карты памяти на низком уровне при помощи CreateFile() и ReadFile().
Если диск открывать как логический — CreateFile("\\\\.\\D:"), то при чтении данные в буфере расположены с начала.
Если диск открывать как физический — CreateFile("\\\\.\\PHYSICALDRIVE1"), то данные начинаются с N-го сектора (у моей SD карты, например с 58-го)
Программа WinHex показывает какой-номер сектора (например, Physical sector no: 57, Logical sector no: 0).
Как правильно определять это смещение, чтобы начать чтение данных с нужного места?
Спасибо за внимание!
08.12.10 18:27: Перенесено модератором из 'WIN API' — Valery A. Boronin
Re: Смещение логического и физического секторов на диске
Здравствуйте, Horzer, Вы писали:
H>Если диск открывать как логический — CreateFile("\\\\.\\D:"), то при чтении данные в буфере расположены с начала. H>Если диск открывать как физический — CreateFile("\\\\.\\PHYSICALDRIVE1"), то данные начинаются с N-го сектора (у моей SD карты, например с 58-го)
H>Как правильно определять это смещение, чтобы начать чтение данных с нужного места?
Как минимум, стоит почитать про таблицы разделов (как классические, так и GUID Partition Table, на всякий случай). После этого по меньшей мере часть вопросов отпадёт.
Re: Смещение логического и физического секторов на диске
H>Как правильно определять это смещение, чтобы начать чтение данных с нужного места?
Если у Вас есть доступ к тому по какому-либо имени и нужно узнать на каких дисках и по каким смещениям этот том расположен, то IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS
Re[2]: Смещение логического и физического секторов на диске
Здравствуйте, Centaur, Вы писали:
C>Как минимум, стоит почитать про таблицы разделов (как классические, так и GUID Partition Table, на всякий случай). После этого по меньшей мере часть вопросов отпадёт.
А разве на флешке они есть ? Кто их там делал ?
With best regards
Pavel Dvorkin
Re[3]: Смещение логического и физического секторов на диске
PD>А разве на флешке они есть ? Кто их там делал ?
Да, оказывается есть — как минимум один раздел.
Я открыв флешку winhex-ом и затерев несколько первых килобайт нулями, думал что сделал из нее неразменный диск. Но теперь я понимаю, что winhex открыл диск как логическое устройство (первый раздел диска) и я потер только данные файловой системы первого раздела. А MBR остался, где данные о разметке диска на разделы.
Centaur, спасибо большое!
Re[2]: Смещение логического и физического секторов на диске
Здравствуйте, MShura, Вы писали:
H>>Как правильно определять это смещение, чтобы начать чтение данных с нужного места?
MS>Если у Вас есть доступ к тому по какому-либо имени и нужно узнать на каких дисках и по каким смещениям этот том расположен, то IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS