我的代码:#define BeginEnumSysDev(clsid, pMoniker) \
{CComPtr<ICreateDevEnum> pDevEnum4$##clsid; \
pDevEnum4$##clsid.CoCreateInstance(CLSID_SystemDeviceEnum); \
CComPtr<IEnumMoniker> pClassEnum4$##clsid; \
if(SUCCEEDED(pDevEnum4$##clsid->CreateClassEnumerator(clsid, &pClassEnum4$##clsid, 0)) \
&& pClassEnum4$##clsid) \
{ \
for(CComPtr<IMoniker> pMoniker; pClassEnum4$##clsid->Next(1, &pMoniker, 0) == S_OK; pMoniker = NULL) \
{ \#define EndEnumSysDev }}}
CString acName;
CComPtr<IBaseFilter> pSource;
BeginEnumSysDev(CLSID_AudioInputDeviceCategory, pMoniker)
{
CComPtr<IPropertyBag> pPB;
pMoniker->BindToStorage(0,0,IID_IPropertyBag,(void**)&pPB); CComVariant var;
pPB->Read(CComBSTR(_T("FriendlyName")),&var,NULL);
acName = CString(var.bstrVal);
if(acName == "电视卡设备名字")
{
pMoniker->BindToObject(NULL,NULL,IID_IBaseFilter,(void**)&pSource);
break;
}
}
EndEnumSysDev编译时总是提示:
missing function header (old-style formal list?)
非常之奇怪啊!!!!