Windows 10相框框架服务器,使用网络摄像头识别实际应用程序

use*_*404 5 c++ windows webcam winapi ms-media-foundation

在Windows 10上,需要访问网络摄像头的应用程序,与之通信frame server的服务进行通信svchost.

我过滤掉了网络摄像头流和我得到的进程ID svchost.我想确定使用网络摄像头的实际过程.

有没有明确的方法来以编程方式识别使用网络摄像头的实际应用程序是什么?我已经研究了枚举进程的句柄(也必须处理NtQueryObject()挂起),但我正在寻找更好的解决方案.

Rom*_* R. 2

我怀疑您是否可以识别使用帧服务器捕获视频的应用程序(实际上,这同样适用于当前或旧版本 Windows 中不使用帧服务器的那些应用程序)。

微软添加了帧服务器,以在视频捕获应用程序和实现此类捕获的实际驱动程序之间插入代理。尽管声明的目的是在应用程序之间共享视频摄像头设备,但我认为它无法操作,并且帧服务器几乎仍然没有记录。我个人的理解是,微软需要以一种方便的方式加入进来,以便能够访问其 Windows Hello 技术的摄像机,因此他们建立了媒体管道。没有采取进一步的步骤来为用户应用程序提供任何新选项。

尝试共享网络摄像头的简约桌面视频捕获应用程序仍然会收到失败,表明通用应用程序不可能共享(我猜微软的 Hello 可能会在帧服务器中存在未记录的后门,用于摄像头共享目的,或者启用共享特定类别的客户端,例如使用 Capture Engine API 等):

在此输入图像描述

也就是说,没有 API 来枚举框架服务器客户端,并且整个应用程序甚至不知道它们是在与真实驱动程序还是框架服务器代理进行通信。

我认为尝试间接获取相关信息,例如通过检查哪些应用程序使用视频相关模块,是不可靠的,并且在多个视频捕获设备(包括虚拟设备)的情况下更加令人困惑。