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

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

Как узнать состояние лотка CD-ROM?


Страницы:   1 2 3

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 в случае пепельницы. А вот на счет пожеваных дисков- это вопрос к мастерам, а я любитель :)


Страницы:   1 2 3

Наверх

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