因为两个声卡名字都是usb audio device,
但两个声卡的pid,vid是不同的(因为声卡类型不同),
所以不能通过改注册表来做如何利用查到的pid,vid来更改系统的默认声卡谢谢。另有一个相关问题,如解决了,就可以通过注册表来做了。
http://community.csdn.net/Expert/topic/3476/3476475.xml?temp=.6945459

解决方案 »

  1.   

    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.   

    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;
    }
      

  3.   

    你先通过这个{a5dcbf10-6530-11d2-901f-00c04fb951ed}GUID用 setupapi 找到两个USB声卡的设备路径,然后用createfile获得handle,再用DeviceIoControl得到设备信息,看看用他们的设备信息能不能区分开他们,至于怎么设置成默认声卡我就不知道应该怎么做了,这个我也没弄过,你去http://www.driverdevelop.com(驱动开发网)上去找一找,不过驱动开发网这两天上不去,等我再帮你找找资料,你留下QQ吧,我这方面也不怎么行,我只侧尽力而为了
    我QQ:11302868.
      

  4.   

    本版FAQ中有,用SETUPAPI可以枚举到,另外你可以给一个人发短消息zhangnanonnet(鱼欢)