Столкнулся с такой проблемой: моё приложение, пишущее звук с микрофона на винт, нормально работает на большинстве компов, но если драйвер звуковой карты настроен некорректно или вообще криво — то приложение помирает, иногда потянув за собой и весь Win98.
Виндовский же встроенный фонограф на этой же машине просто не пишет звук, но и не умирает, и уж тем более не валит систему.
Задача — каким-то образом определить до попытки записи командой
"record",настроен ли ФАКТИЧЕСКИ драйвер звуковой карты (ибо Винда всегда говорит что всё OK, устройство якобы поддерживает запись) и предотвратить вылет системы.Перекопал MSDN по mciSendString и mciSendCommand — но ничего нужного вроде бы не увидел — везде стандартный подход, когда в системе полный порядок.
Подскажите, pls, хотя бы где об этом можно спросить или почитать.
Спасибо!
Re: MCI - как определить что -девайс ФАКТИЧЕСКИ работает
Не уверен, поможет ли, но: глянь на список API функций, которые sndrec32.exe импортирует из winmm.dll и msacm32.dll. Потом выбери из них "подозрительные", т.е. те, в которых может быть проверка на возможность записи — и читай хелпы по ним.
Возможно, рекордер использует другие API-функции для собственно записи, скорее всего более специализированные — они и устраивают более стабильную проверку на ошибки. Может глянешь на них?
Удачи!
Re: MCI - как определить что -девайс ФАКТИЧЕСКИ работает
Здравствуйте, mig23, Вы писали:
M>Здравствуй All!
M> Столкнулся с такой проблемой: моё приложение, пишущее звук с микрофона на винт, нормально работает на большинстве компов, но если драйвер звуковой карты настроен некорректно или вообще криво — то приложение помирает, иногда потянув за собой и весь Win98. M>Виндовский же встроенный фонограф на этой же машине просто не пишет звук, но и не умирает, и уж тем более не валит систему. M> Задача — каким-то образом определить до попытки записи командой M>"record",настроен ли ФАКТИЧЕСКИ драйвер звуковой карты (ибо Винда всегда говорит что всё OK, устройство якобы поддерживает запись) и предотвратить вылет системы.Перекопал MSDN по mciSendString и mciSendCommand — но ничего нужного вроде бы не увидел — везде стандартный подход, когда в системе полный порядок. M> Подскажите, pls, хотя бы где об этом можно спросить или почитать.
M> Спасибо!
Что тут сказать, я занимался вопросом записи звука с микрофона, дело в том что mciSendCommand возвращает число, и если оно не 0, то это ошибка, а затем с помощью
mciGetErrorString можно посмотреть и на строковое значение данной ошибки. Да и в мсдн это написано хорошо. Если не так, то в чем же проблема?
Удачи!
Re[2]: MCI - как определить что -девайс ФАКТИЧЕСКИ работает
От:
Аноним
Дата:
30.09.03 13:20
Оценка:
Здравствуйте, bsvas, Вы писали:
B>Здравствуйте, mig23, Вы писали:
M>>Здравствуй All!
M>> Столкнулся с такой проблемой: моё приложение, пишущее звук с микрофона на винт, нормально работает на большинстве компов, но если драйвер звуковой карты настроен некорректно или вообще криво — то приложение помирает, иногда потянув за собой и весь Win98. M>>Виндовский же встроенный фонограф на этой же машине просто не пишет звук, но и не умирает, и уж тем более не валит систему. M>> Задача — каким-то образом определить до попытки записи командой M>>"record",настроен ли ФАКТИЧЕСКИ драйвер звуковой карты (ибо Винда всегда говорит что всё OK, устройство якобы поддерживает запись) и предотвратить вылет системы.Перекопал MSDN по mciSendString и mciSendCommand — но ничего нужного вроде бы не увидел — везде стандартный подход, когда в системе полный порядок. M>> Подскажите, pls, хотя бы где об этом можно спросить или почитать.
M>> Спасибо!
B>Что тут сказать, я занимался вопросом записи звука с микрофона, дело в том что mciSendCommand возвращает число, и если оно не 0, то это ошибка, а затем с помощью B>mciGetErrorString можно посмотреть и на строковое значение данной ошибки. Да и в мсдн это написано хорошо. Если не так, то в чем же проблема?
B>Удачи!
Извините за повтор, но mciSendCommand при коряво поставленном звуковом драйвере
просто помирает,положив приложение, а иногда — и систему.Так что до проверки ошибок дело не доходит — приложение помирает и проверять ошибки уже некому.