Перейти к содержанию
    

Delphi. Функция ReadFile ошибка 87 (0x57) ?

9 hours ago, zombi said:

Что, где и зачем я должен дизасмом смотреть?

Как осуществляется доступ к диску у Win32DiskImager.

Наверняка по комбинации CreateFile  / DeviceIoControl  можно отыскать. К тому же для виндовых прог у IDA есть отладчик. Ставите бряку на, например CreateFile, и смотрите какие параметры передаются. И затем в своей проге установить теже самые параметры

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 hours ago, xvr said:

(Нужен "\\.\PhysicalDrive0" - вместо 0 ваш номер)

Таки да, Вы правы. Если открыть диск как физический, то ReadFile читает любые диски правильно, независимо от  того есть ли на диске хоть какая FS или нет.

Однако, теперь перестала работать запись (WriteFile)!

Винда не даёт записать вообще ничего на любой диск открытый как физический. :cray:

Как побороть?

 

PS. пытаюсь писать блоками по 256 секторов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 hours ago, zombi said:

Винда не даёт записать вообще ничего на любой диск открытый как физический. :cray:

Нужны права (как минимум запуск от администратора). Возможно понадобится поколдовать и с полученным хэндлом (через DeviceIOControl). Как минимум его залочить

> Так у меня же съёмный носитель, поэтому открываю так : "\\.\E:"

Так открываются вольюмы, т.е. Windows должна прочесть partition table и понять, что именно там написано - иначе вольюм не получится (т.к. он представляет собой смонтированный партишен)

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

3 minutes ago, xvr said:

Как минимум его залочить

Ясно. Спасибо. Разобрался.

Действительно DeviceIoControl с кодом FSCTL_LOCK_VOLUME оказалось достаточно для разблокировки записи!

Залочить надо все логические диски имеющиеся на физическом носителе.

Но перед этим нужно определить какой лог.диск на каком физ.диске находится и сколько их на нём вообще с

помощью DeviceIoControl с кодом IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS.

Запутанно конечно, однако это работает!

:dance3::dance4:

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно ли считать неисправной (и/или ожидать скорой поломки) CF карту, если у неё скорость чтения меньше чем скорость записи?

Или это вполне нормально для такого типа карт памяти?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...