您可以使用snd_card_next迭代卡片,从值-1开始以获得第0张卡片.
这是示例代码;用gcc -o countcards countcards.c -lasound编译它:
#include
#include
int main()
{
int totalCards = 0; // No cards found yet
int cardNum = -1; // Start with first card
int err;
for (;;) {
// Get next sound card's card number.
if ((err = snd_card_next(&cardNum)) < 0) {
fprintf(stderr,"Can't get the next card number: %s\n",snd_strerror(err));
break;
}
if (cardNum < 0)
// No more cards
break;
++totalCards; // Another card found,so bump the count
}
printf("ALSA found %i card(s)\n",totalCards);
// ALSA allocates some memory to load its config file when we call
// snd_card_next. Now that we're done getting the info,tell ALSA
// to unload the info and release the memory.
snd_config_update_free_global();
}
这是从cardnames.c减少的代码(也打开每张卡以读取其名称).