msdn上关于uvc extension unit

wangkingyuan 2016-12-20 09:16:48
https://msdn.microsoft.com/zh-cn/windows/hardware/drivers/stream/providing-a-uvc-inf-file
其中提到
“In general, vendors who supply a setup package can register the plug-in DLL by using the setup package, in which case the vendor does not provide an INF file. For driver signing, it may be easier to provide a setup package instead of a device-specific INF file.”
不通过.inf文件,又该怎么做?
...全文
660 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ncnaf 2017-01-11
  • 打赏
  • 举报
回复
另外下面是我目前的测试程序,请看一下,那里有问题:
#include <dshow.h>
#include <ks.h>
#include <ksproxy.h>
//#include <dmksctrl.h>
//#include <atlbase.h>
#include <atlconv.h>
#include <ksmedia.h>

//DEFINE_GUID(GUID_CARDV_TL_CD200, 0xC987A729, 0x59D3, 0x4569, 0x84, 0x67, 0xFF, 0x08, 0x49, 0xFC, 0x19, 0xE8);

static const GUID GUID_CARDV_TL_CD200 = {
	0x6bdd1fc6,
	0x810f,
	0x11d0,
	0xbe, 0xc7, 0x08, 0x00, 0x2b, 0xe2, 0x09, 0x2f };

//static const GUID GUID_CARDV_TL_CD200 = {
//	0xC987A729,
//	0x59D3,
//	0x4569,
//	0x84, 0x67, 0xFF, 0x08, 0x49, 0xFC, 0x19, 0xE8 };

BOOL TestUvcControlExt(IBaseFilter *pBF, long lData) {
	IKsControl *pCtl = NULL;
	HRESULT hr = pBF->QueryInterface(IID_IKsControl, (void **)&pCtl);
	if (FAILED(hr))
		return FALSE;

	KSP_NODE knod;
	long nEffects = 0;
	ULONG dwRsz = 0;

	knod.Property.Set = GUID_CARDV_TL_CD200;
	knod.Property.Id = KSPROPERTY_EXTENSION_UNIT_CONTROL;
	knod.Property.Flags = (KSPROPERTY_TYPE_SET | KSPROPERTY_TYPE_TOPOLOGY);
	knod.NodeId = 1;
	knod.Reserved = 0;

	hr = pCtl->KsProperty((PKSPROPERTY) &knod, sizeof(knod), NULL, 0, &dwRsz);
	if (FAILED(hr)) {
		pCtl->Release();
		return FALSE;
	}
	printf("0x%08X, %u, 0x%08X\n", hr, dwRsz, nEffects);

	pCtl->Release();
	return TRUE;
}

int main() {
	USES_CONVERSION;
	HRESULT hr = NULL;

	CoInitialize(NULL);

	ICreateDevEnum *pSysDevEnum = NULL;
	hr = CoCreateInstance(CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC_SERVER,
		IID_ICreateDevEnum, (void **)&pSysDevEnum);
	if (FAILED(hr)) {
		return hr;
	}

	IEnumMoniker *pEnumCat = NULL;
	hr = pSysDevEnum->CreateClassEnumerator(CLSID_VideoInputDeviceCategory, &pEnumCat, 0);
	if (hr != S_OK) {
		pSysDevEnum->Release();
		return -1;
	}

	IMoniker *pMoniker = NULL;
	ULONG monikerFetched;
	while (pEnumCat->Next(1, &pMoniker, &monikerFetched) == S_OK) {
		IPropertyBag *pPropBag;
		VARIANT varName;
		IBaseFilter *pFilter;
		hr = pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pPropBag);
		if (FAILED(hr)) {
			pMoniker->Release();
			continue;
		}
		VariantInit(&varName);
		hr = pPropBag->Read(L"FriendlyName", &varName, 0);
		//"FriendlyName": The name of the device.
		//"Description": A description of the device.
		//Filter Info================
		printf("[%s]\n", W2A(varName.bstrVal));
		VariantClear(&varName);

		hr = pMoniker->BindToObject(NULL, NULL, IID_IBaseFilter, (void**)&pFilter);
		if (!pFilter) {
			continue;
		}
		TestUvcControlExt(pFilter, 0);

		pFilter->Release();
		pPropBag->Release();
		pMoniker->Release();
	}
	pEnumCat->Release();
	pSysDevEnum->Release();
	printf("=================================================\n");
	CoUninitialize();

	return 0;
}
ncnaf 2017-01-11
  • 打赏
  • 举报
回复
楼主,你好 我最近也在研究通过UVC extension unit控制视频设备。我搜索出来的结果是通过directshow的IKsControl发送消息,不知道对不对? 能不能给个源码参考一下?我邮箱是fcn11@outlook.com
wangkingyuan 2016-12-22
  • 打赏
  • 举报
回复
谢谢大家的回复, 已研究出软件这边的实现。
赵4老师 2016-12-20
  • 打赏
  • 举报
回复
百度搜相关关键字。
赵4老师 2016-12-20
  • 打赏
  • 举报
回复
我也没实际弄过驱动开发。
wangkingyuan 2016-12-20
  • 打赏
  • 举报
回复
@赵4老师 我目前只接触过应用软件的开发,对驱动和偏硬件一点的东西不了解。还望老师能指点迷津。 https://msdn.microsoft.com/zh-cn/windows/hardware/drivers/stream/uvc-extension-unit-code-samples,除了编译、注册.ax,还需要怎么做,才能用上面的测试代码获取到相应的信息?
赵4老师 2016-12-20
  • 打赏
  • 举报
回复
Windows驱动开发 http://www.osronline.com/
wangkingyuan 2016-12-20
  • 打赏
  • 举报
回复
@zhao4zhong1 您好,我根据https://msdn.microsoft.com/zh-cn/windows/hardware/drivers/stream/uvc-extension-unit-code-samples 编译出了.ax,但是我这个.inf文件该怎么使用呢?现在的硬件上边写的是usb.inf,是要改成自己的.inf吗?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧