UVC摄像头技术笔记
+ -

UVCXU扩展单元调试工具SET_CUR时获取数据长度错误0x800700ea

2022-02-10 578 0

在开发UVC扩展单元调试工具遇到的一个问题就是获取SET_CUR时的有效数据长度。

进行数据的SET_CUR和GET_CUR,是通过KsProperty函数实现的。函数声明如下:

NTSTATUS KsProperty(
  [in]      PKSPROPERTY Property,
  [in]      ULONG       PropertyLength,
  [in, out] PVOID       PropertyData,
  [in]      ULONG       DataLength,
  [out]     ULONG       *BytesReturned
);

可以看到BytesReturned是返回的数据长度,不过这也只适用于GET_CUR的请求,如果是SET_CUR就一直是0。自己后来就一直研究实际的长度是怎么来的,没弄清楚。后来请教了临江仙大佬才知道,是需要先进行GET_CUR请求,这时会获取数据的长度即执行GET_LEN,通过这个返回的数据长度再进行SET_CUR请求。
不过一个很奇怪的问题是,在GET_CUR时,会返回HRESULT为0x800700ea错误,不过数据长度确实获取到了。
所以这里做个标记,后面有空再研究一下。
昨晚上看了一下HRESULT,这里放一个链接,可以对照的看一下。http://www.pnpon.com/article/detail-325.html

HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

UVC 扩展单元描述符
扩展单元描述符允许硬件设计者定义任意一组控制接口,使类驱动程序可以在设备与供应商提供的主机软件之间进行通讯控制。扩展单元描述符ID由bUnitID字段中的值唯一标识描述符。同一视频功能内的任何其他单元或终端不得具有相同的功能ID。guidExtensionCode字段包含特定于供应商的代码,该代......
UVC摄像头扩展单元功能的开发步骤是什么?
写在扩展单元的题外话本人在开发支持UVC扩展单元的directShow应用时,必现并不需要注册接口,只需要在其源过滤器参照后续的代码枚举相关的接口如IKsControl,IKsTopologyInfo定位到指定的扩展单元接口后,直接使用其对应的IKsControl::KsProperty即可实现扩展......
UVC特定类请求get cur返回长度是26或者是34的是什么?
从返回的长度来看,你应该是在应用打开摄像头,进行视频格式及图形分辨率协商返回的数据长度.UVC视频流接口这两个特别重要的选择子,分别用于协商过程和提交数据格式,让固件开始发送数据。ControlSelector ValueVS_PROBE_CONTROL0x01VS_COMMIT_CONTROL0x......
UVC摄像头批量传输的StreamOn和StreamOff
在UVC规范中,UVC摄像头视频数据的传输方式支持两种,分别为批量传输和同步传输。UVC摄像头数据传输的格式按负载数据头的方式按帧进行打包传输。根据USB规范可知,同步传输方式是只要带中带有同步端点的接口,系统会定时从设备中读取数据,无论设备中是否有数据。而如要要停止数据的传输,只需要选中不带有同步......
UAC 特定类请求
特定类请求一般用于设置或获取音频控制。这些控制又分为两大部分:音频控制请求:对音频控制单元或终端进行控制。音频流请求: 如对音频流控制的请求,如音频采相率等。音频设备类也支持其他特定于类的请求:内存请求(Memory Request),每个可寻址的实体或终端,可导出一个内存映射接口。提供对该实体内存......
UVC 扩展单元控制请求
扩展单元控制请求设置或读取扩展单元内的视频控件.bmRequestTypebRequestwValue(2)wIndexwLengthData00100001SET_CUR选择子扩展单元ID参数长度参数块bmRequestTypebRequestwValue(2)wIndexwLengthData1......
【UVC调试笔记】第一个GET CUR请求产生babble detected的原因排查
【前言】开通blog的目的有两个:一是记录UVC调试过程中遇到的问题和解决方案,方便自己review二是给广大开发者提供一些解决问题的思路故障现象:枚举完以后,打开videocap,从bushoud上抓包,可以看出第一个GET CUR会产生一个babble detected的error排查过程:通......
SET_CUR/GET_CUR
设置请求SET_CUR设置请求用于设置视频功能的相关属性,这些属性一般由相关的端点、接口来实现。bmRequestType(1)bRequest(1)wValue(2)wIndex(2)wLength(2)Data(0~N)00100001(接口或实体)————— 001......
V4L2访问摄像头扩展单元命令
我们可以通过IOCTL访问扩展单元,调用方法如下:ioctl(fd, UVCIOC_CTRL_QUERY, struct uvc_xu_control_query *);访问不同的扩展命令只需要修改uvc_xu_control_query 结构体里面内容即可。uvc_xu_control_qu......
用XU打造UVC命令行调试工具
在给客户交付UVC固件之后,有时客户会反馈问题,需要客户查看固件的打印信息或者执行一些命令辅助定位问题。如果有一个工具可以通过USB线连接到设备,直接在电脑上查看打印信息,执行命令就好了。有想法就要行动起来,行动才能解决问题。目前该功能已经实现了,说一下实现的方法吧。上位机OS Windows设......
UVC摄像头扩展单元调试工具-临江仙版
UVC摄像头的开发者为了实现一些私有定制协议的通讯,通常使用UVC自带的扩展单元来实现。通常是自定义一个扩展单元,再定义一些相应的选择子,然后再通过特定类请求实现与固件的通讯。 本站现提供一个Windows环境下,使用DirectShow开发的UVC扩展单元调试工具.UVC摄像头扩展单元工具来自......
UVC PTZ和扩展单元XU的过滤与分发调试笔记
在写这篇文章之前,我得首先感谢微软,感谢你的不严格,让我可以有空子可钻,不至于太过狼狈…记得看过一句话,开局一张图,内容全告编。我多么希望自己在UVC摄像头的调试过程中也可以瞎编乱造,这样不至于身心疲惫。至少保持着愉快的心情,吹吹牛,也是一件很开心的事。今日有一个需求,对UVC摄像头的请求进行......
UVC摄像头驱动装调试总结
前几天发表了一篇文章 UVC PTZ和扩展单元的过滤与分发调试笔记,原文见: http://www.usbzh.com/article/detail-517.html ,本来想着应该没啥问题了,可没想到上周五在实际测试过程中,还是出现了问题:经过长时间的UVC摄像头工作,突然驱动显示了大量数据包错误......
U盘枚举失败-该设备无法启动(GET_MAX_LUN请求)
群里有人用STM32搞了一个U盘,但是U盘在插入电脑后在设备管理器是枚举失败。我让他看一下设备状态:又是熟悉的错误码10,表示设备启动失败。设备的启动失败,一般在设备获取描述符获取之后,初始会失败,我之前在弄USB虚拟鼠标的时候也遇到此类情况。不过由于这个设备是U盘,本人还没有研究USB存储协议,只......
windows上面通过dshow接口访问uvc摄像头扩展单元,只能访问0x01-0x1F命令问题
最近在给客户做一个修改摄像头数据的工具,在通过dshow接口发送扩展命令的时候发现0x01-0x1F命令都可以发送成功,0x20及以上定义的命令都发送失败,并且返回错误码0x80070490。谷歌百度查了很久终于在windows官网文档中找到了答案,原来是USB 视频类驱动程序对UVC扩展单元实现......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!