如何检测系统中是否存在默认记录设备?
时间:2020-03-05 18:46:56 来源:igfitidea点击:
如何检测系统是否安装了默认记录设备?
我敢打赌,可以通过对Win32 API的一些调用来完成此操作,任何人对此都有任何经验吗?
我说的是通过代码执行此操作,而不是通过打开控制面板并在声音选项下进行查看。
解决方案
回答
有一个称为PortAudio的开源音频API,我们可以使用一种方法。我认为该方法称为Pa_GetDeviceInfo()或者其他名称。
回答
使用DirectX SDK,我们可以调用DirectSoundCaptureEnumerate,它将为系统上的每个DirectSoundCapture设备调用DSEnumCallback函数。传递给DSEnumCallback的第一个参数是LPGUID,它是"标识要枚举的设备的GUID的地址,或者为主设备的NULL"。
如果我们需要做的就是找出是否存在记录设备(如果我们真的需要了解默认设备,我认为这还不够好),则可以使用waveInGetNumDevs:
#include <tchar.h> #include <windows.h> #include "mmsystem.h" int _tmain( int argc, wchar_t *argv[] ) { UINT deviceCount = waveInGetNumDevs(); if ( deviceCount > 0 ) { for ( int i = 0; i < deviceCount; i++ ) { WAVEINCAPSW waveInCaps; waveInGetDevCapsW( i, &waveInCaps, sizeof( WAVEINCAPS ) ); // do some stuff with waveInCaps... } } return 0; }
回答
win32 api为此提供了一个名为waveInGetNumDevs的函数。