关于usb声卡驱动的几个问题

[复制链接]
查看11 | 回复2 | 2021-1-27 06:30:15 | 显示全部楼层 |阅读模式
我把麦克风和耳机插入usb声卡上以后,对着麦克风说话,耳机能够立即听到,但是我对声卡驱动的工作原理不是很清楚。
第一,irp的传送方向不太清楚。一般的,当一个usb设备驱动装好后,irp在设备栈中自上而下传送完成读写操作。但是我先对着麦克风说话,底层先获得数据,这时是底层向上层发送irp说明自己得到了数据请求发送到耳机,还是上层向底层询问是否得到数据?
第二,当麦克风的数据就绪以后,数据是怎样发送到耳机的?是麦克风的输入和耳机的输出各有一个设备栈呢还是麦克风的输入和耳机的输出在同一个设备栈上?不管是哪一种方式,数据究竟是如何传送的呢?
希望高人指点,不胜感激!
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:30:15 | 显示全部楼层
引用楼主的回复:第一,irp的传送方向不太清楚。一般的,当一个usb设备驱动装好后,irp在设备栈中自上而下传送完成读写操作。但是我先对着麦克风说话,底层先获得数据,这时是底层向上层发送irp说明自己得到了数据请求发送到耳机,还是上层向底层询问是否得到数据?
是上层往下层发IRP,同时可以注册完成例程.下层驱动收到数据后,将数据拷贝到IRP指定的Buffer中,然后完成该IRP处理。IOManager会通知上层驱动,该IRP在下层已经处理完毕,并且调用上层驱动的完成例程。
引用楼主的回复:第二,当麦克风的数据就绪以后,数据是怎样发送到耳机的?是麦克风的输入和耳机的输出各有一个设备栈呢还是麦克风的输入和耳机的输出在同一个设备栈上?不管是哪一种方式,数据究竟是如何传送的呢?
有两种可能。一种可能是USB声卡内部直接将Mic数据送到了Speaker中。
还有一种可能是操作系统内有一个应用程序,该应用程序从Mic取数,然后把获得的数据发送到Speaker。
回复

使用道具 举报

千问 | 2021-1-27 06:30:15 | 显示全部楼层
引用1楼的回复:是上层往下层发IRP,同时可以注册完成例程.下层驱动收到数据后,将数据拷贝到IRP指定的Buffer中,然后完成该IRP处理……
这个好似有点明白了。
引用1楼的回复:有两种可能。一种可能是USB声卡内部直接将Mic数据送到了Speaker中。
还有一种可能是操作系统内有一个应用程序,该应用程序从Mic取数,然后把获得的数据发送到Speaker。

如果是第一种的话,我觉着Mic和Speaker应该各有一个设备栈,mic设备栈的顶层收到数据后通知speaker设备栈的顶层,然后数据从speaker设备栈的底层送到speaker输出。不知道这样理解对不对。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行