基本上,我想知道的是是否有可能使用ipropertybag抢夺某些相机属性。这好像是
CComPtr< IPropertyBag > pBag;
hr = pM->BindToStorage( 0, 0, IID_IPropertyBag, (void**) &pBag );
if( hr != S_OK )
continue;
// ask for the english-readable name
//
CComVariant var;
var.vt = VT_BSTR;
hr = pBag->Read( L"FriendlyName", &var, NULL );
if( hr != S_OK )
continue;
这是在获取相机的友好名称,我想知道是否有可能获取其他属性值,例如增益,偏移x和y,以及不使用此属性包的内容。
最佳答案
Selecting a Capture Device文章中记录了那里可用的属性:
"FriendlyName" The name of the device. VT_BSTR
"Description" A description of the device. VT_BSTR
"DevicePath" A unique string that identifies the device. (Video capture devices only.) VT_BSTR
"WaveInID" The identifier for an audio capture device. (Audio capture devices only.) VT_I4
如果相应的驱动程序准备了某些注册表项,则可以使用其他属性,但是这种情况很少见。在任何情况下,读取属性都映射为从注册表读取,这意味着它们是静态值,与您感兴趣的运行时参数不同。诸如增益之类的值是使用相应的过滤器/引脚接口查询的。