如何从用户空间注册一个虚拟卡alsa?

我正在从用户空间开发一个虚拟设备

(使用umview http://wiki.virtualsquare.org/wiki/index.php/UMview )所以,我需要注册我的设备到系统的声卡列表

(我从来没有在内核模块中使用alsa,所以我认为我需要调用snd_card_register()函数)

但我无法从用户空间find一种方法…

也许我可以写一个系统调用来做到这一点?

Solutions Collecting From Web of "如何从用户空间注册一个虚拟卡alsa?"

我认为你应该停止重写任何特定的文件(即停止使用umview,这是不需要的),并简单地使用“文件”插件在ALSA配置中创建设备,将通过命名管道中的数据到您的虚拟设备/var/run/virtualsound/output或类似的地方。

与umview方法不同,这将在所有应用程序中工作,而不必以任何特殊的方式运行它们。

我前几次解决了这个问题,

Alsa用户空间lib只需打开每个/ dev / snd / controlC#从0到32并启动

 ioclt(SNDRV_CTL_IOCTL_CARD_INFO,...); 

以便用安装的声卡建立一个列表

所以,如果我们在/ dev / snd / control#上挂载我们的UmView模块,并且劫持ioctl并回答它,那么我们的模块将被ALSA识别为一个声卡

我用这种技术创建了一个虚拟声音设备,你可以在https://github.com/berdav/umdevaudio

这是一个简单的方法来建立一个简单的用户空间驱动程序。