void GetAudioFormatsCount(IltmmCapture *pCapture) { IltmmAudioFormats *pAudioFormats; IltmmAudioFormat *pAudioFormat; int i; long lCount; long lFreq, lBits, lChannels; long lFoundAt; long lSelection; VARIANT_BOOL bSelected; // get the audio formats collection: pCapture->get_AudioCaptureFormats(&pAudioFormats); pAudioFormats->get_Count(&lCount); for (i=0; i<lCount; i++) { // get the item at index I pAudioFormats->Item(i, &pAudioFormat); // do something with this item, like viewing its information: pAudioFormat->get_SampleFrequency(&lFreq); pAudioFormat->get_BitsPerSample(&lBits); pAudioFormat->get_Channels(&lChannels); pAudioFormat->get_Selected(&bSelected); // view information... // you may select the format if it matches some criteria: if (lFreq == 8000 && lBits == 8 && lChannels == 1) pAudioFormat->put_Selected(VARIANT_TRUE); // free the item pAudioFormat->Release(); } // you might use the Find method to search for a specific format: pAudioFormats->Find(16000, 16, 2, &lFoundAt); if (lFoundAt != -1) { // do something with it: // check if it is already selected, and if not, select it: pAudioFormats->get_Selection(&lSelection); if( lSelection != lFoundAt ) pAudioFormats->put_Selection(lFoundAt); } // free the audio formats collection pAudioFormats->Release(); }