在Windows 10上,需要访问网络摄像头并与之通信的应用程序frame server
是在下运行的一项服务svchost
。
我过滤了网络摄像头流,得到的进程ID是svchost
。我想确定使用网络摄像头的实际过程。
是否有确定的方式以编程方式识别使用网络摄像头的实际应用是什么?我研究了枚举处理的句柄(也必须处理NtQueryObject()
挂起),但是我正在寻找更好的确定解决方案。
我怀疑您是否可以确定使用帧服务器捕获视频的应用程序(嗯,实际上,对于在当前版本或更旧版本的Windows中不使用帧服务器的那些应用程序也是如此)。
Microsoft添加了帧服务器,以在视频捕获应用程序和实现此类捕获的实际驱动程序之间插入代理。即使宣布的意图是在应用程序之间共享摄像机设备,我也不认为它是可运行的,并且帧服务器几乎没有任何文献记载。我个人的理解是,Microsoft需要以一种方便的方式进行连接,以使其能够使用Windows Hello技术访问摄像机,因此他们准备了媒体管道。没有采取进一步的步骤为用户应用程序提供任何新的选项。
试图共享网络摄像机的简约桌面视频捕获应用程序仍然会收到失败消息,表明无法共享通用应用程序(我想像Microsoft这样的Hello可能在框架服务器中有未记录的后门用于共享摄像头,或者启用了共享特定类别的客户(例如使用Capture Engine API等):
也就是说,没有用于枚举帧服务器客户端的API,并且整个应用程序甚至都不知道它们是在与真实的驱动程序还是在与帧服务器代理通信。
我认为,尝试间接获取相关信息(例如通过检查哪些应用程序使用了视频相关模块)是不可靠的,并且在包括虚拟视频捕获设备在内的多个视频捕获设备的情况下,甚至更加令人困惑。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句