我正在从用户空间开发一个虚拟设备
(使用 umview http://wiki.virtualsquare.org/wiki/index.php/UMview)所以,我需要将我的设备注册到系统的声卡列表
(我从未在内核模块中使用过 alsa,所以我认为我需要调用 snd_card_register() 函数)
但我找不到从用户空间做到这一点的方法......
也许我可以写一个系统调用来做到这一点?
我正在从用户空间开发一个虚拟设备
(使用 umview http://wiki.virtualsquare.org/wiki/index.php/UMview)所以,我需要将我的设备注册到系统的声卡列表
(我从未在内核模块中使用过 alsa,所以我认为我需要调用 snd_card_register() 函数)
但我找不到从用户空间做到这一点的方法......
也许我可以写一个系统调用来做到这一点?
前段时间解决了这个问题
Alsa 用户空间库只需打开从 0 到 32 的每个 /dev/snd/controlC# 并启动
ioctl(SNDRV_CTL_IOCTL_CARD_INFO, ...);
为了用已安装的声卡建立一个列表
如果我们在 /dev/snd/control# 上挂载 UmView 模块并劫持 ioctl 并对其进行响应,我们的模块将被 ALSA 识别为声卡
我用这种技术创建了一个虚拟声音设备,你可以在 https://github.com/berdav/umdevaudio找到它
这是构建简单用户空间驱动程序的简单方法。