Как написать драйвер виртуального аудиоустройства для WinXP

Как написать простейший драйвер виртуального аудиоустройства в WinXP? Я знаю, что один из способов — написать WDM-драйвер, но я полагаю, что это непростая задача. Мне нужно реализовать фильтрацию звука для приложения на основе Flash. К сожалению, кажется, что это единственный способ сделать это - вне Flash, с помощью драйвера устройства, тогда приложение Flash может подключиться к моему виртуальному устройству. Мне было интересно, могу ли я написать драйвер устройства, используя какой-то высокоуровневый API (выше, чем WDM), может быть, UMDF в качестве виртуального аудиоустройства USB (?) или, может быть, только какую-то dll, которая зарегистрирует виртуальное устройство. Как я вижу, плагин Google Talk содержит googleadapter.dll, который предоставляет виртуальные веб-камеры, интересно, как они его написали.

Заранее спасибо, терник


person ternyk    schedule 08.02.2010    source источник


Ответы (2)


Для WinXP достаточно написать Устанавливаемый драйвер которая представляет собой простую dll пользовательского режима. Однако это не будет работать под Vista или более поздней версией, потому что у них другая аудиомодель.

person Sergey Podobry    schedule 08.02.2010
comment
Хорошо, спасибо за быстрый ответ! Как насчет Висты и выше? Можно ли это сделать также упрощенным способом? - person ternyk; 08.02.2010
comment
Вы можете попробовать использовать перехват API. - person Sergey Podobry; 09.02.2010
comment
Не могли бы вы подробнее рассказать о перехвате API? Какой API? - person Presidenten; 10.04.2010
comment
Есть много мест, где можно зацепиться (зависит от ваших целей). Посмотрите на Wave API (waveOutGetNumDevs, waveOutOpen и т. д.), DirectSound API (DirectSoundCreate) и MMDevice API (CLSID_MMDeviceEnumerator). Используйте отладчик, чтобы получить больше информации. - person Sergey Podobry; 14.04.2010
comment
кажется, что вы можете использовать драйверы пользовательского режима в Vista, вы просто не можете использовать их в качестве устройств по умолчанию (?) totalrecorder.com/Vista_and_TR_user_mode_driver.htm - person rogerdpack; 30.07.2010

Какой API? Первое, о чем я бы беспокоился, — это узнать, как приложения взаимодействуют с Windows, и лучший способ сделать это — научиться кодировать приложение со звуком, используя тот же интерфейс. Итак, если он использует аудио DirectSound, узнайте, как кодировать приложение, использующее DirectSound.

Причина, по которой я это говорю, заключается в том, что как только вы узнаете, как работает ваш код, вы также будете знать, какой API нужно подключить. Затем он идет оттуда, закодируйте инжектор загрузчика/dll, чтобы он выполнял то, что вам нужно.

Наконец, не забудьте использовать Google, чтобы сначала провести самостоятельное исследование:

[quote]Дай человеку рыбу, он будет сыт один день... Научи человека ловить рыбу и он больше никогда не будет голодать...[/quote]

person Bob the Builder    schedule 23.04.2010
comment
Зажги человека огнём и ему будет тепло день, Зажги человеку огонь и ему будет тепло всю жизнь ;) - person Yarek T; 10.10.2010