#include #include #include #include int main() { int mixerfd = open("/dev/mixer", O_RDWR, 0); if (mixerfd == -1) { printf("OSSEnumerator: Failed to open /dev/mixer\n"); return 1; } oss_sysinfo sysinfo; if (ioctl(mixerfd, SNDCTL_SYSINFO, &sysinfo) == -1) { printf("OSSEnumerator: Failed SNDCTL_SYSINFO\n"); return 1; } for (int i=0;i< sysinfo.numaudios;i++) { oss_audioinfo ainfo; ainfo.dev = i; if (ioctl(mixerfd, SNDCTL_AUDIOINFO, &ainfo) == -1) { printf("OSSEnumerator: SNDCTL_AUDIOINFO failed for device %d\n", i); continue; } int virtual = 0; if (ainfo.caps & PCM_CAP_VIRTUAL) virtual = 1; printf("dev %s\tvirtual %d\n", ainfo.devnode, virtual); } close(mixerfd); }