Привет всем. Есть драйвер который принимает от устройства аудио поток, вот вопрос, как этот поток выдать на звуковую карту в режиме ядра? Соответственно хотелось бы и узнать как получить данные с микрофона ?
судя по всему ирпами по врайту мажера дровины ... должно быть стандартно для всех дров карт ... по идее. хотя , пардон , не имею такой инфы. ты с кодаками работаешь ?
Открываешь спецификацию звуковой карты через PCI (или через что-то другое (зависит от звуковой карты)) находишь базовые адреса регистров (в I/O пространстве или отображенных на физическое адресное пространство) и работаешь с ними, предварительно прочитав их описание и протокол взаимодействия
Тебе походу нужно копать в сторону работы с потоковыми устройствами. они не создают устройство через IoCreateDevice, вместо этого вызывается функция StreamClassRegisterAdapter. После этого тебе в определенную функцию начинают приходить srb(Stream Request block). Так же как с асинхронными сокетами. У меня стоит похожая задача только с ТВ-тюнером на этот предмет изучаю исходники TestCap из WinDDK. Только я пока сам очень мало знаю по этой теме. А вообще в папке DDK\Src\WDM\Audio находится пример драйвера к АС97 думаю тебе стоит начать оттуда
А может кто нибудь слышал про драйвер sysaudio, как я понял через него работают все звуковые API, а то мой поиск про этот драйвер результатов не принёс. Может кто поделится хотябы полезной сылкой (хорошо бы ещё с примерами)
al79, если найдешь какую-нибудь не слишком сухую документацию по звуковым потокам в кернел режиме, да и вообще по теме топика, скинь сюда обязательно!
al79 Драйвер звука - это как бы минидрайвер,а основной драйвер обрабатывающий запросы IOCTL это либо stream.sys, либо ks.sys. Проще посмотри какие IOCTL получают указанные драйверы при проигрывании звука, дальше открываешь их и посылаешь IOCTL.