每当进程尝试访问网络摄像头以及有关该进程的信息时,我都会收到通知。
到目前为止,我已使用SetupDiGetClassDevs
和SetupDiGetDeviceRegistryProperty(SPDRP_PHYSICAL_DEVICE_OBJECT_NAME)
标识了网络摄像头的物理设备名称,其外观类似于\Device\0000003c
。
我还可以看到像skype这样的进程对上面的设备有一个开放的句柄。有没有办法监控这样的打开句柄请求(在驱动程序模式或用户模式下)?我可以使用NtQuerySystemInformation()
和NtQueryObject()
查询所有进程及其打开句柄。有更好的方法吗?
我也调查了IoRegisterPlugPlayNotification()
。为此我想我需要一个pnp驱动程序。
我是否可以使用其他一些机制来实现这一目标?我调查了directshow但我不确定是否可以使用directshow
来实现上述目标