![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как узнать состояние лотка CD-ROM?
BPK © (2003-02-17 23:00:00)Открыть и закрыть дверцу CD-ROM это хорошо. Таких советов навалом в Сети (причём подавляющее большинство - с использованием MCI, а не WinAPI).
Только вот никто не может сказать, как узнать, открыта ли в данный момент эта дверца.
BPK (2003-02-26 11:34:00) [21]Я, кажется, ясно написал: EAC (Exact Audio Copy), а не какой-то лазерный проигрыватель. Когда вы все научитесь внимательно читать?!
AGGRESSOR (2003-02-25 17:46:00) [22]Возьмем примитивный лазерный проигрыватель Microsoft.
Если диск находится в устройстве, он успешно его открывает/закрывает одной кнопкой. Но если лоток пустой, то происходит только close, а eject- ни-ни.
Вывод: прога пробует читать диск, и если это успешно, делает eject. И если даже дядя Билли не встроил в свой супер-пупер проигрыватель простую функцию проверки состояния лотка- значит, для виндюха она недоступна по некоторым соображениям (например, в целях безопасности (на случай войны с Ираком :)).
BPK (2003-02-23 23:44:00) [23]Эй, специалисты! Куда вы пропали? Жду ответа.
BPK (2003-02-20 11:42:00) [24]Из-под MS-DOS не нужно посылать команду непосредственно в порт ATA-контроллера, достаточно послать через MSCDEX команду непосредственно драйверу CD-ROM.
У DOS-драйвера CD-ROM есть команда IOCTL Input (код команды: 3). У этой команды есть подфункция номер 6: определение состояния устройства, которая возвращает слово состояния привода.
В этом слове нулевой бит как раз показывает состояние лотка:
1 - устройство открыто
0 - устройство закрыто
Кому интересны подробности, см. книгу Александра и Григория Фроловых "Библиотека системного программиста", том 33, стр.189.
Данным флагом состояния лотка пользуется, например, DOS Navigator в своём CD-проигрывателе: нажали кнопку - лоток выехал, ещё раз нажали ту же кнопку - закрылся.
То, что под Windows флаг состояния лотка доступен можно доказать с помощью программы EAC (Exact Audio Copy), в которой кнопка открывания-закрывания лотка действует похожим образом.
Так что, изучайте вопрос прежде чем хохмить. Этим вы лишь показываете своё невежество и склонность делать поспешные выводы, да ещё смущаете людей, соблазнившихся большим количеством ответов на вопрос. То-то они удивятся прочитав всю эту ахинею!
Беспечный Ангел (2003-02-20 10:06:00) [25]
> Serja
Да, работает! ;) А вообще, наверное, хорош хохмить... Человек правда помощи попросил... Жаль, конечно, по поводу обновления биоса классная шутка есть, но.... Мусорить не буду...
Беспечный Ангел (2003-02-20 09:57:00) [26]
> Если бы некоторые умники нормально разбирались бы в аппаратуре
> и хотя бы раз разбирали привод CD-ROM....
Некоторые "умники" как раз в железе хорошо и разбираются... Так вот, дело в том, что далеко не все CD приводы выдадут на гора тебе эту информацию. Скажем с Mitsumi ты этого не вытянешь (по крайней мере, я его очень долго и нудно "ковырял"). А тебе, как я понимаю, нужно универсальное средство... Проще, когда тебе нужно ТОЧНО знать, в каком состоянии каретка, посылать ей комманду... А насчет того, что
> Эти контакты служат для отключения двигателя выдвигания
> лотка, а одновременно используются для программного определения
> состояния лотка.
то посмотри на CD Samsung: вроде все ок, а ты попробуй скорость ограничить! Не выйдет... Вот так и с этим. Чаще всего, ИМХО, эти контакты используются ТОЛЬКО для двигателя лотка. Вот... Нужна будет дополнительная инфа, пиши....
Serja (2003-02-20 09:15:00) [27]> Беспечный Ангел
> Но ведь в ранних версиях делфи можно дать комманду DELPHI_8.FUNCTION:=ENABLE;
> и не надо никаких сервис-паков!!! Вот тока в 9 делфи это
> почему-то не работает... ;)
В Делфи 9 надо писать уже
DELPHI_8.FUNCTION.ENABLE:=TRUE;
Alex Konshin (2003-02-20 03:48:00) [28]Если ты точно знаешь, какой регистр IDE и какой бит нужно читать из-под DOS, то их можно попробовать достать и из-под NT. Например, через DeviceIoControl c IOCTL_SCSI_MINIPORT (не обращай внимания на то, что там слово SCSI присутствует).
Короче, не обещаю, что сработает, но попробовать можно.
Возможно, что и через SMART можно достать. Короче повнимательнее нужно посмотреть документацию.
Напиши на e-mail о том, что ты читаешь под DOS, я попробую помочь тем, что знаю. Можешь сослаться на документ на t13 - я найду.
BPK (2003-02-20 03:14:00) [29]Если бы некоторые умники нормально разбирались бы в аппаратуре и хотя бы раз разбирали привод CD-ROM, они бы знали, что внутри есть пара контактов, которая замыкается (или размыкается, в каждой модели по-разному) при выдвинутом лотке.
Эти контакты служат для отключения двигателя выдвигания лотка, а одновременно используются для программного определения состояния лотка.
Там, где нет лотка, там флаг состояния тоже присутствует, просто механика другая.
Короче, нефиг сорить в форуме. Уже с десяток ответов, а дельного совета нет. Не смущайте других людей, которые бродят здесь в поисках ответов.
Anatoly Podgoretsky (2003-02-19 22:49:00) [30]Ich Hasse © (19.02.03 22:41)
Ни кто не спрашивал про диск, вопрос был про лоток
Ich Hasse (2003-02-19 22:41:00) [31]Народ, если честно я балдею... откуда взялся Delphi 8, а тем более 9. Насколько я знаю Borland выпустил только Delphi 7.
А вопрос как узнать положили ли диск в лоток вообще классный
А где клавиатура лежит (под столом или над столом) может тоже сказать?
DVM (2003-02-19 18:24:00) [32]
> AGGRESSOR
> 3. Не все то лоток, что выезжает из привода...
Есть стойки из десятков дисков, в системе видятся как один диск, на стойке кнопка - выбор диска. Ничто там никуда не вьезжает и не выезжает и я просто не представляю себе универсальную функцию способную определить состояние такого девайса.
p.s. А в системе этот девайс выглядит как обычный сд-привод и даже по-минимому драйверов не требует.
Anatoly Podgoretsky (2003-02-19 16:44:00) [33]BPK (19.02.03 15:59)
Не у любого, и не обязательно что оно меняется
AGGRESSOR (2003-02-19 16:12:00) [34]
> DVM © (19.02.03 16:04)
3. Не все то лоток, что выезжает из привода...
DVM (2003-02-19 16:04:00) [35]1. Не у любого привода есть лоток
2. У некоторых приводов несколько лотков.
BPK (2003-02-19 15:59:00) [36]IMHO такое сделать можно, потому что у любого привода CD-ROM в слове состояния есть флаг состояния лотка. Как читать этот флаг из-под MS-DOS я знаю, но нужно решение для Win32 API.
Я не верю, что в Microsoft об этом не позаботились.
Zhenka (2003-02-19 05:19:00) [37]Тов. Bpk ИМХО такое сделать нельзя, Можно лиш проверить Состояние готовности сиди, если сиди не готоов , то может дажеи дверца открыта, а может диска нет??
BPK (2003-02-18 23:03:00) [38]Уважаемый Zhenka и прочие хохмачи, я шуток не понимаю. Мне нужен серьёзный ответ.
WinAPI-функция TrayDeviceInfo не существует, а CoffeeCupHolderInfo и всё остальное просто издевательство над серьёзными людьми.
Пожалуйста, не мусорьте ложными ответами, а приведите РЕАЛЬНОЕ решение, если Вы, конечно, его знаете.
Беспечный Ангел (2003-02-18 17:27:00) [39]
> официально пепельница не заявлена в списке поддерживаемых
> plug-n-play девайсов
Надо бы биос обновить... Потом напишу, что из этого получилось...
А функцию атоматической очистки пепельницы не подскажете??? ;)
AGGRESSOR (2003-02-18 16:38:00) [40]
> DELPHI_8.FUNCTION:=ENABLE
:)))
А что до пепельницы- официально пепельница не заявлена в списке поддерживаемых plug-n-play девайсов, но есть недокументированный булевский параметр IsAshTray, возвращает true в случае пепельницы. А вот на счет пожеваных дисков- это вопрос к мастерам, а я любитель :)