int marucam_device_check(void)\r
{\r
int ret = 0;\r
- HRESULT hr;\r
+ HRESULT hr = E_FAIL;\r
ICreateDevEnum *pCreateDevEnum = NULL;\r
IEnumMoniker *pEnumMK = NULL;\r
- IMoniker *pMoniKer;\r
-\r
- hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);\r
- if (FAILED(hr)) {\r
- ERR("[%s] failed to CoInitailizeEx\n", __func__);\r
- goto error;\r
- }\r
-\r
- hr = CoCreateInstance(&CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC, &IID_ICreateDevEnum, (void**)&pCreateDevEnum);\r
- if (FAILED(hr)) {\r
- ERR("[%s] failed to create instance of CLSID_SystemDeviceEnum\n", __func__);\r
- goto error;\r
- }\r
-\r
- hr = pCreateDevEnum->lpVtbl->CreateClassEnumerator(pCreateDevEnum, &CLSID_VideoInputDeviceCategory, &pEnumMK, 0);\r
- if (FAILED(hr))\r
- {\r
- pCreateDevEnum->lpVtbl->Release(pCreateDevEnum);\r
- ERR("[%s] failed to create class enumerator\n");\r
- goto error;\r
- }\r
-\r
- if (!pEnumMK)\r
- {\r
- pCreateDevEnum->lpVtbl->Release(pCreateDevEnum);\r
- ERR("[%s] class enumerator is NULL!!\n");\r
- goto error;\r
- }\r
- pEnumMK->lpVtbl->Reset(pEnumMK);\r
-\r
- hr = pEnumMK->lpVtbl->Next(pEnumMK, 1, &pMoniKer, NULL);\r
- if (hr == S_FALSE)\r
- {\r
- hr = E_FAIL;\r
- }\r
- if (SUCCEEDED(hr))\r
- {\r
- IPropertyBag *pBag = NULL;\r
- hr = pMoniKer->lpVtbl->BindToStorage(pMoniKer, 0, 0, &IID_IPropertyBag, (void **)&pBag);\r
- if(SUCCEEDED(hr))\r
- {\r
- VARIANT var;\r
- var.vt = VT_BSTR;\r
- hr = pBag->lpVtbl->Read(pBag, L"FriendlyName", &var, NULL);\r
- if (hr == NOERROR)\r
- {\r
- ret = 1;\r
- SysFreeString(var.bstrVal);\r
- }\r
- pBag->lpVtbl->Release(pBag);\r
- }\r
- pMoniKer->lpVtbl->Release(pMoniKer);\r
- }\r
-\r
-error:\r
- CoUninitialize();\r
- return ret;\r
-}\r
-\r
-int marucam_device_check(void)\r
-{\r
- int ret = 0;\r
- HRESULT hr;\r
- ICreateDevEnum *pCreateDevEnum = NULL;\r
- IEnumMoniker *pEnumMK = NULL;\r
- IMoniker *pMoniKer;\r
+ IMoniker *pMoniKer = NULL;\r
\r
hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);\r
if (FAILED(hr)) {\r
hr = pEnumMK->lpVtbl->Next(pEnumMK, 1, &pMoniKer, NULL);\r
if (hr == S_FALSE)\r
{\r
+ ERR("[%s] enum moniker returns a invalid value.\n", __func__);\r
hr = E_FAIL;\r
}\r
if (SUCCEEDED(hr))\r