воспроизводится ли звук
От: MrLika  
Дата: 23.05.05 21:30
Оценка:
нужно определить воспроизводится ли в данный момент какой-то звук звуковой картой (допустим винамп играет или фильм смотрят). даже не знаю с какой стороны подойти к этой проблеме. подскажите плз.
Re: воспроизводится ли звук
От: j.smith  
Дата: 23.05.05 23:53
Оценка:
MrLika wrote:
>
>
> нужно определить воспроизводится ли в данный момент какой-то звук
> звуковой картой (допустим винамп играет или фильм смотрят). даже не знаю
> с какой стороны подойти к этой проблеме. подскажите плз.

Решение "в лоб" — посмотреть не ходят ли соотвествующие IRP_* к драйверу
звуковой карты/микшеру. Требует написания маленького драйвера.

А вот что-то более умное не придумывается...
Posted via RSDN NNTP Server 1.9
Re: воспроизводится ли звук
От: emusic Франция https://software.muzychenko.net/ru
Дата: 24.05.05 08:44
Оценка:
Здравствуйте, MrLika, Вы писали:

ML>нужно определить воспроизводится ли в данный момент какой-то звук звуковой картой (допустим винамп играет или фильм смотрят).


Чтобы определить, что воспроизводится звук — надо измерять уровень сигнала на выходе карты

Если исходить из того, что карта имеет WDM-драйвер, и задачу нужно решать под системой не ниже 98/2k, то можно найти воспроизводящий (rendering) пин драйвера, и дать ему запрос KSPROPERTY_PIN_CINSTANCES, на который он ответит, сколько раз его открыли (инстанцировали). Если драйвер на попытку открыть пин ответит что-нибудь вроде STATUS_INSUFFICIENT_RESOURCES — значит, он уже кем-то открыт, и больше одного экземпляра не допускает.

Чтобы открыть пин — придется поизвращаться с добыванием адреса функции KsCreatePin из ksuser.dll. Подробности можно посмотреть в примере DirectKS, скачав его с сайта MS.

Если Wave-устройство обслуживается WDM-драйвером, то имя интерфейса для доступа к драйверу под 2k и выше можно получить через waveOutMessage (DRV_QUERYDEVICEINTERFACE). Под 98/ME придется перебирать все устройства класса RENDER и сравнивать имена.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.