如何通过pid vid 指定系统默认的声卡。

shadowWind 2004-10-22 02:11:12
因为两个声卡名字都是usb audio device,
但两个声卡的pid,vid是不同的(因为声卡类型不同),
所以不能通过改注册表来做

如何利用查到的pid,vid来更改系统的默认声卡

谢谢。

另有一个相关问题,如解决了,就可以通过注册表来做了。
http://community.csdn.net/Expert/topic/3476/3476475.xml?temp=.6945459
...全文
258 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
AthlonxpX86 2004-10-27
  • 打赏
  • 举报
回复
本版FAQ中有,用SETUPAPI可以枚举到,另外你可以给一个人发短消息zhangnanonnet(鱼欢)
zblaoshu1979 2004-10-27
  • 打赏
  • 举报
回复
你先通过这个{a5dcbf10-6530-11d2-901f-00c04fb951ed}GUID用 setupapi 找到两个USB声卡的设备路径,然后用createfile获得handle,再用DeviceIoControl得到设备信息,看看用他们的设备信息能不能区分开他们,至于怎么设置成默认声卡我就不知道应该怎么做了,这个我也没弄过,你去http://www.driverdevelop.com(驱动开发网)上去找一找,不过驱动开发网这两天上不去,等我再帮你找找资料,你留下QQ吧,我这方面也不怎么行,我只侧尽力而为了
我QQ:11302868.
shadowWind 2004-10-22
  • 打赏
  • 举报
回复
谢谢回贴
不过
你的代码和我的问题没有关系
:(
taianmonkey 2004-10-22
  • 打赏
  • 举报
回复
int Get_ControlID_of_Record_By_Index(int iIndex)
{
HMIXER hmx;
MIXERLINE mxl;
MIXERLINECONTROLS mxlc;
MIXERCONTROL mxctrl;

mixerOpen(&hmx, iIndex, 0L, 0L, MIXER_OBJECTF_MIXER);

//根据MIXERLINE_COMPONENTTYPE_DST_WAVEIN,先得到LineID
mxl.cbStruct = sizeof(MIXERLINE);
mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_WAVEIN;
//获取指定行混音设备的相关信息
if (::mixerGetLineInfo(reinterpret_cast<HMIXEROBJ>(hmx),
&mxl,
MIXER_OBJECTF_HMIXER | /* 目标是返回的设备句柄*/
MIXER_GETLINEINFOF_COMPONENTTYPE /* 返回第一个设备的信息*/)
!= MMSYSERR_NOERROR)
return 0;

//因为该行只包含一个Radio控件 Record Source Control,我们可以得到它的Control ID
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
mxlc.dwLineID = mxl.dwLineID;
mxlc.cControls = 1;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_MIXER; //Mixer Type
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = &mxctrl;
if (::mixerGetLineControls((HMIXEROBJ)hmx, &mxlc,MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
!= MMSYSERR_NOERROR)
{
mxlc.cbStruct = sizeof(MIXERLINECONTROLS);
mxlc.dwLineID = mxl.dwLineID;
mxlc.cControls = 1;
mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_MUX; //Mux Type
mxlc.cbmxctrl = sizeof(MIXERCONTROL);
mxlc.pamxctrl = &mxctrl;
if (::mixerGetLineControls((HMIXEROBJ)hmx, &mxlc,MIXER_OBJECTF_HMIXER | MIXER_GETLINECONTROLSF_ONEBYTYPE)
!= MMSYSERR_NOERROR)
return 0;
}

mixerClose(hmx);
return mxctrl.dwControlID;
}
taianmonkey 2004-10-22
  • 打赏
  • 举报
回复
HMIXER hmx;

PMIXERCONTROLDETAILS_LISTTEXT pmxcd_lt;
MIXERCONTROLDETAILS mxcd;

int nConnections = Get_Connections_Of_Record_By_Index(iIndex);//得到指定的设备的录音源的个数
if (nConnections == 0) return;

int nControlID = Get_ControlID_of_Record_By_Index(iIndex);

mixerOpen(&hmx, iIndex, 0L, 0L, MIXER_OBJECTF_MIXER);

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧