Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Низкоуровневый доступ к гибкому диску (форматирование, итд) [NT4, Win2k, WinXP]


Serge Grivachenko ©   (2003-01-13 10:38:00) 

Известно, что в NT/2000/XP низкоуровневый доступ к диску отличается от Win95/98
Я пыталя открыть дисковод, как устройство, через CreateFile("//./a:") и далее пытаюсь форматировать/читать но АПИ функции DeviceIOControl, ReadFile возвращают ошибку 5 Denied Acces
Вопрос, что же я делаю не так?
Простите за мою тупость :)


Serge Grivachenko   (2003-01-16 14:06:00) [1]

Я нашел ошибку
Я при открытии диска не указал доступ на чтение и запись (сглупил, потому что в мсдн примере было без этого)
Я написал:
hDevice := CreateFile(PChar("\\.\a:"), 0,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, // default security attributes
OPEN_EXISTING, // disposition
0, // file attributes
0); // don"t copy any file"s attributes

А надо было
hDevice := CreateFile(PChar("\\.\a:"),

GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ or FILE_SHARE_WRITE,
nil, // default security attributes
OPEN_EXISTING, // disposition
0, // file attributes
0); // don"t copy any file"s attributes


Теперь проблема в том, что читать,писать и форматировать цилиндры 80,81 в NT2K нельзя, а очень хочется, потому что иначе любой файл скопированный на дискету может повредить инфу в секторах, а я этого не хочу :)


Я подумал еще работать с серийным номером дискеты. Никто не пытался писать на дискету тот серийномер который сам захочет?


Vox   (2003-01-13 21:39:00) [2]

2OxOTHuK
И мне, и мне! Нам всем нужна документация! Пожалуйста!


Alex Konshin   (2003-01-13 21:19:00) [3]

А что ты конкретно делаешь?
Приведи код. Может решим твою проблему.
Правда, я, к сожалению, не работал с флоппи.

Вот для того, чтобы работать с жестким диском обычно требуется права Администратора. Поэтому с ним нужно работать через контроллер используя команды IOCTL_SCSI_MINIPORT.
Причина в том, что по умолчанию только администратор имеет право чтения-записи на физический диск, а вот для контроллера - everyone. Увидеть это можно с помощью утилиты http://www.sysinternals.com/ntw2k/freeware/winobj.shtml
Найди в фолдере \?? (или в \GLOBAL?? для XP) PhisicalDrive0, посмотри на что он указывает и открой там страничку секурити. Потом найди scsi0 и проделай то же самое.
Вот именно так в свое время я и открыл способ как доставать s/n диска не имея прав администратора.

Но для флоппи там вроде все в порядке с правами. Значит, что-то другое.


Сергей Макаров   (2003-01-13 18:32:00) [4]

TO OxOTHuK
и мне плиз тоже если можно.
makarov_s@rambler.ru


OxOTHuK   (2003-01-13 16:19:00) [5]

Я тебе могу выслать документацию по программированию дисководов... сам посмотришь..


Наверх

Титульная страница Поиск, карта сайта Написать письмо