alsa混合器用户空间应用程序

alsa混合器用户空间应用程序,alsa,Alsa,我正在办理amixer申请。在此应用程序中,有两个打开的函数: snd_ctl_hw_open(&handle,NULL,card,0) snd_控制打开(&手柄,卡,0) 第一个是与ALSA内核交互,但我不知道第二个函数到底在做什么。 snd\u-ctl\u-hw\u-open(&handle,NULL,card,0)存在于从amixer snd\u-card\u-get\u-index(optarg)调用的控件中。c不是amixer的一部分snd_ctl_hw_open是ALSA库的一个实现

我正在办理amixer申请。在此应用程序中,有两个打开的函数:

  • snd_ctl_hw_open(&handle,NULL,card,0)
  • snd_控制打开(&手柄,卡,0)
  • 第一个是与ALSA内核交互,但我不知道第二个函数到底在做什么。
    snd\u-ctl\u-hw\u-open(&handle,NULL,card,0)存在于从amixer snd\u-card\u-get\u-index(optarg)调用的控件中。c不是amixer的一部分
    snd_ctl_hw_open
    是ALSA库的一个实现。您的实际问题是什么?如果一个命令行为amixer提供一个命令行参数作为amixer-c5。。。。现在在amixer应用程序中,我正在调用snd_card_get_index(optarg),我想知道这个函数到底在做什么,snd_ctl_open(&handle,card,0)在内部调用snd_dlopen(),这到底意味着什么。ALSA设备插件的内部实现没有文档记录,我懒得写一本关于它的书
    snd_dlopen
    用于加载实现
    hw
    控制插件的库,该插件恰好是libasound本身。(使用,Luke!)我真正关心的是sound.c(sound/core)lnux已经从用户空间注册了snd_open()函数,我通过该函数调用该函数(snd_open())。内核的
    .open
    函数由
    open(“/dev/snd/controlC…”)调用。