一种计算机视频设备保护方法和装置的制作方法

文档序号:6367131阅读:217来源:国知局
专利名称:一种计算机视频设备保护方法和装置的制作方法
技术领域
本申请涉及计算机技术领域,特别是涉及一种计算机视频设备保护方法和装置。
背景技术
随着互联网技术的发展,在互联网中用户可以通过视频设备(比如摄像头)与其 他用户进行视频交互,并且在互联网中,许多应用程序都可打开视频设备,获取用户端的视频信息。在使用过程中,如果一用户不注意对视频设备的管理,互联网中其他用户很可能得到到该用户不愿意公开的视频信息,尤其对于黑客来说,很容易就通过远程操作控制视频设备获取用户端的视频信息。现有技术中,对于视频隐私的保护技术是使用windows内核HOOK技术拦截打开摄像头的进程,即当有进程打开用户端视频设备时,通过内核API的HOOK函数CreateFile函数和DeviceIoControl函数阻断当前进程发送给用户端视频设备的请求消息,即钩取,并弹出提示框等待用户进行处理。在这个过程中,一旦拒绝HOOK的CreateFile和DeviceIoControl函数,即用户长时间不对弹出提示框进行处理或者选择阻断,所述进程无法再次打开视频设备,因为暴力的阻断了应用进程和视频设备之间的通讯,破坏了应用进程与视频设备之间正常交互的协议,导致该应用进程认为视频设备损坏而无法再次访问视频设备,必须重启该进程方可再次与视频设备通讯。

发明内容
本申请所要解决的技术问题是提供一种计算机视频设备保护方法和装置,使在保护用户视频信息不会产生进程认为视频设备损坏而无法再次访问的情况。为了解决上述问题,本申请公开了一种计算机视频设备保护装置,包括视频流过滤驱动和监控模块;所述视频流过滤驱动包括控制模块和物理驱动对象模块;所述物理驱动对象模块用于当获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块;当读取到视频流数据后,将视频流数据对应的应用进程标识信息发送至监控模块;将所述视频流数据替换为所述替换数据;所述控制模块用于将所述视频流参数信息和应用进程标识信息发送给监控模块;所述监控模块用于接收所述控制模块发送的应用进程标识信息和视频流参数信息;依据视频流参数信息将替换数据发送至所述物理驱动对象模块;依据所述应用进程标识信息提示用户端是否允许所述应用进程使用视频设备;
当允许所述应用进程读取视频流数据时,监控模块通知所述物理驱动对象模块停止替换。优选的,在所述物理驱动对象模块中,当获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块;当读取到视频流数据后,将应用进程对应的应用进程标识信息发送至监控模块时包括当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块;
当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流数据对应的应用进程标识信息发送至监控模块。优选的,在所述物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流参数信息发送至监控模块时包括当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第一帧视频流数据时,将所述视频流数据对应的应用进程标识信息发送至监控模块;或,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第N帧视频流数据时,其中N > I,将所述视频流数据对应的应用进程标识信息发送至监控模块,并将第N帧之前的每帧视频流数据中每一字节处理为与所述视频流数据不同的数据;或,当所述物理驱动对象模块不能解析所述视频流时,将所述视频流的数据置换为零发送给应用进程。优选的,在所述物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块时包括当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息时,将所述视频流参数信息发送至监控模块;或,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流参数信息发送至监控模块。优选的,在所述监控模块中,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括在接收到视频流参数信息时,将替换数据通过控制模块发送至所述物理驱动对象模块;所述替换数据为与视频流参数信息对应的替换数据;和/或,在接收到应用进程标识信息时,将替换数据通过控制模块发送至所述物理驱动对象模块;所述替换数据为与视频流参数信息对应的替换数据。优选的,在所述监控模块中,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括将预置的第一源替换数据转换为与视频流参数信息对应的替换数据,并将替换数据发送至所述物理驱动对象模块;所述与视频流参数信息对应的替换数据为与视频设备输出的数据类型相同的替换数据,所述第一源替换数据包括待转换的图片数据。优选的,在所述监控模块中,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括将用户端选择的数据作为监控模块进行处理的第一源替换数据。
优选的,所述监控模块还用于发送暂停指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为当前发送给应用进程的数据;和/或,发送阻断指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流 数据替换为替换数据;和/或,发送恢复指令至所述的物理驱动对象模块,控制所述物理驱动对象模块停止将所述视频流数据替换为所述替换数据、和/或停止将所述后续的每帧视频流数据替换为当前发送给应用进程的数据。优选的,所述的控制模块包括监控过滤器;所述监控过滤器由所述监控模块在控制模块中创建,所述应用进程标识信息和视频流参数信息通过所述监控过滤器将发送给监控模块。优选的,在所述物理驱动对象模块中,依据所述替换数据,将所述视频流数据替换为所述替换数据时包括当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,判断所述监控模块是否已经在控制模块中创建监控过滤器;若是,则调整所述物理驱动对象模块为第一替换模式,用于将所述视频流数据替换为所述替换数据;和/或,当监控模块接收到所述视频流数据对应的应用进程标识信息时,通过所述监控过滤器发送替换指令至所述物理驱动对象模块,调整所述物理驱动对象模块为第二替换模式,用于将所述视频流数据替换为所述替换数据。优选的,在所述物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息时包括所述物理驱动对象模块通过分析IPR_MJ_CREATE函数中的消息获取所述视频流
参数信息。优选的,在所述物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据时包括所述物理驱动对象模块通过对IPR_MJ_DEVICE_C0NTR0L函数中的I0CTL_KS_READ_STREAM消息分析判断是否有应用进程通过物理驱动对象模块读取视频流;若是,则获取当前应用进程标识信息,将所述视频流数据对应的应用进程标识信息发送给监控模块。优选的,根据系统注册表加载所述视频流过滤驱动,并在所述视频流过滤驱动中创建控制模块和针对视频设备的物理驱动对象模块。相应的,本申请还公开了一种计算机视频设备保护方法,包括获取视频设备对应的视频流参数信息;当读取到视频流数据后,将视频流数据对应的应用进程标识信息发送至监控模块;所述监控模块依据视频流参数信息将替换数据发送至所述物理驱动对象模块;所述物理驱动对象模块依据所述替换数据将所述视频流数据替换为所述替换数据;所述监控模块依据所述应用进程标识信息提示用户端是否允许所述应用进程读取视频流数据;当允许所述应用进程读取视频流数据时,监控模块通知所述物理驱动对象模块停止替换。优选的,获取视频设备对应的视频流参数信息,和当读取到视频流数据后,将视频流数据对应的应用进程标识信息发送至监控模块包括当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块;当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流数据对应的应用进程标识信息发送至监控模块。优选的,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流参数信息发送至监控模块时包括 当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第一帧视频流数据时,将所述视频流数据对应的应用进程标识信息发送给监控模块;或,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第N帧视频流数据时,其中N > I,将所述视频流数据对应的应用进程标识信息发送给监控模块,并将第N帧之前的每帧视频流数据中每一字节处理为与所述视频流数据不同的数据。优选的,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块时包括当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息时,将所述视频流参数信息发送至监控模块;或,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流参数信息发送至监控模块;或,当所述物理驱动对象模块不能解析所述视频流时,将所述视频流的数据置换为零发送给应用进程。优选的,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括在接收到视频流参数信息时,将替换数据通过控制模块发送至所述物理驱动对象模块;和/或,在接收到应用进程标识信息时,将替换数据通过控制模块发送至所述物理驱动对象模块。优选的,在所述监控模块中,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括将预置的第一源替换数据转换为与视频流参数信息对应的替换数据,并将替换数据发送至所述物理驱动对象模块;所述与视频流参数信息对应的替换数据为与视频设备输出的数据类型相同的替换数据,所述第一源替换数据包括待转换的图片数据。优选的,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括将用户端选择的数据作为监控模块进行处理的第一源替换数据。优选的,还包括通过所述监控模块发送暂停指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为当前发送给应用进程的数据;和/或,通过所述监控模块发送阻断指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为替换数据;和/或,通过所述监控模块发送恢复指令至所述的物理驱动对象模块,控制所述物理驱动对象模块停止将所述视频流数据替换为所述替换数据、和/或停止将所述后续的每帧视频流数据替换为当前发送给应用进程的数据。优选的,所述应用进程标识信息和视频流参数信息通过监控过滤器发送给监控模块;所述监控过滤器由所述监控模块在控制模块中创建。
优选的,依据所述替换数据,将所述视频流数据替换为所述替换数据时包括当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,判断所述监控模块是否已经在控制模块中创建监控过滤器;若是,则调整所述物理驱动对象模块为第一替换模式,用于将所述视频流数据替换为所述替换数据;和/或,当监控模块接收到所述视频流数据对应的应用进程标识信息时,通过所述监控过滤器发送替换指令至所述物理驱动对象模块,调整所述物理驱动对象模块为第二替换模式,用于将所述视频流数据替换为所述替换数据。优选的,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息时包括所述物理驱动对象模块通过分析IPR_MJ_CREATE函数中的消息获取所述视频流
参数信息。优选的,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据时包括所述物理驱动对象模块通过对IPR_MJ_DEVICE_C0NTR0L函数中的I0CTL_KS_READ_STREAM消息分析判断是否有应用进程通过物理驱动对象模块读取视频流;若是,则获取当前应用进程标识信息,将所述视频流数据对应的应用进程标识信息发送给监控模块。优选的,还包括根据系统注册表加载过滤驱动,并在所述过滤驱动中创建控制模块和针对视频设备的物理驱动对象模块。与现有技术相比,本申请包括以下优点本申请在过滤驱动中创建控制模块和针对实际视频设备的物理驱动对象模块,所述控制模块接收监控模块发送的替换数据,并转发监控模块发送给物理驱动对象模块的替换数据;本申请利用上述物理驱动对象模块将视频设备的视频流替换为与视频流数据类型相同的替换数据返回给应用进程,在本申请的处理过程中,对于应用进程的任何一个请求消息包,均没有强行的进行阻断,对于带有视频流数据的请求包,只是将请求包中的视频数据替换为与视频相同格式的替换数据,既没强行的暴力的阻断应用进程和视频设备之间的通讯,也不会破坏应用进程与视频设备之间正常交互的协议,不会导致该应用进程认为视频设备损坏而无法再次访问视频设备,该应用进程不用重启即可重新访问所述视频设备;另外,在本申请中,是在获取到视频设备的视频流数据后再提示用户端选择是否允许进行阻断,不会造成误报的情况。


图I是本申请一种计算机视频设备保护装置的结构示意图2是本申请一种计算机视频设备保护方法的流程示意图。
具体实施例方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式
对本申请作进一步详细的说明。在windows系统中,如果设置了过滤驱动,则所有访问实际设备的消息和实际设备返回的消息都需要经过过滤驱动。本申请在windows过滤驱动的机制下添加了一层视频流过滤驱动,那么即可在过视频流滤过驱动中对与视频设备交互的消息进行处理,不必阻断应用进程的消息循环,而不必直接通过HOOK函数直接阻断进程的消息循环,从而破坏应用进程与视频设备之间正常的通讯协议,避免了阻断后应用程序无法再次打开的情况,使应用进程可以多次进行正常访问视频设备。参照图1,其示出了本申请一种计算机视频设备保护装置的结构示意图,包括视频流过滤驱动110和监控模块120 ;所述视频流过滤驱动包括控制模块111和物理驱动对象模块112 ;所述物理驱动对象模块112用于当获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块;当读取到视频流数据后,将视频流数据对应的应用进程标识信息发送至监控模块;依据所述替换数据,将所述视频流数据替换为所述替换数据;所述控制模块111用于将所述视频流参数信息和应用进程标识信息发送给监控模块;所述监控模块120用于接收所述控制模块发送的应用进程标识信息和视频流参数信息;依据视频流参数信息将替换数据发送至所述物理驱动对象模块;依据所述应用进程标识信息提示用户端是否允许所述应用进程使用视频设备;当允许所述应用进程读取视频流数据时,监控模块通知所述物理驱动对象模块停止替换。在本申请中,系统首先会加载视频流过滤驱动,即根据系统注册表加载所述视频流过滤驱动,并在所述视频流过滤驱动中创建控制模块和针对视频设备的物理驱动对象模块。实际中,需要将加载针对视频设备(比如摄像头设备)的视频流过滤驱动(Imaging devices),并在所述过滤驱动中创建控制模块和针对视频设备的设备对象。一般情况下,所述过滤驱动的加载是在系统启动时进行加载的,即根据系统注册表进行加载,本申请的过滤驱动加载时在系统注册表中的位置包括 “HKEY_L0CAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDDlFC6-810F-11D0-BEC7-08002BE2092F}\UpperFiIters”
创建启动服务项,将该驱动服务随机启动(其中,“CamFilter”为启动服务项名称,可根据实际情况进行修改)启动服务项注册表路径[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CamFilter]" Type" = dword :00000001" Start" = dword :00000001在加载过滤驱动后,在过滤驱动中会针对每个实际的视频设备创建相应的物理驱动对象模块,还会创建一个控制模块用于接收监控模块的指令与数据。另外,在监控模块启动时,会打开视频流过滤驱动中的控制模块,同时在控制模块 中注册一个监控过滤器,即所述的控制模块包括监控过滤器;所述监控过滤器由所述监控模块在控制模块中创建,所述应用进程标识信息和视频流参数信息通过所述监控过滤器发送给监控模块。在监控模块启动后,监控模块首先会通过MJ_CREATE函数发送一个IPR_MJ_CREATE请求包到过滤驱动,过滤驱动接收到该请求包后首先会判断该请求包中的设备对象的句柄是否为预置的控制模块的句柄,所述控制模块的句柄为所述控制模块的名称;如果是,则发送到控制模块打开控制模块,即打开预置的设备对象句柄,并创建一个空属性的过滤器;然后监控模块再发送一条控制指令将该空属性的过滤器注册为监控过滤器,实际中,本申请所述的注册是监控模块发送监控的IRP (I/O request packet)请求并被控制模块挂起,等待物理驱动对象模块发送的相关信息,比如视频流参数信息和需要使用视频设备的应用进程标识信息等。其中,在所述物理驱动对象模块中,当获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块;当读取到视频流数据后,将应用进程对应的应用进程标识信息发送至监控模块时包括当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块;在获取到视频流参数信息后,具体将所述视频流参数信息发送至监控模块的时机可根据情况选择。比如,在获取到视频流参数信息后,立即将所述视频流参数信息发送至监控模块的时机可根据情况选择;或者在获取到视频流参数信息后,先将其存储于过来驱动对象模块,然后当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,与视频流数据对应的应用进程标识信息一起发送至监控模块。当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流数据对应的应用进程标识信息发送至监控模块。优选的,在所述物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流参数信息发送至监控模块时一般可包括(I),当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第一帧视频流数据时,将所述视频流数据对应的应用进程标识信息发送给监控模块。或,(2)当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第N帧视频流数据时,其中N > 1,将所述视频流数据对应的应用进程标识信息发送给监控模块,并将第N帧之前的每帧视频流数据中的每一字节处理为与所述视频流数据不同的数据。实际中,对于第N帧之前的每帧视频流数据,也可将每帧视频流数据中的部分字节处理为与所述视频流数据不同的数据。对于具体处理方式,本申请不对其加以限制,保证应用进程收到所述视频流数据时,无法显示视频设备真实图像即可。或,(3)当所述物理驱动对象模块不能解析所述视频流时,将所述视频流的数据置换为零发送给应用进程。 比如,当视频设备发送的视频流到第10帧时,应用进程读取到第10帧时再将应用进程标识信息发送至监控模块。一般情况下,是通过控制模块中的监控过滤器发送至监控模块。其中,所述物理驱动对象模块通过对IPR_MJ_DEVICE_C0NTR0L函数中的I0CTL_KS_READ_STREAM消息分析判断是否有应用进程通过物理驱动对象模块读取视频流;若是,则获取当前应用进程标识信息,将所述视频流数据对应的应用进程标识信息发送给监控模块。实际中,物理驱动对象模块接收到监控模块发送的替换数据之前,可能无法及时将应用进程当前读取的视频流数据替换为替换数据,即在监控模块接收到视频流参数信息,再将预置的第一源替换数据处理为替换数据发送到物理驱动对象模块的第二时间点,与物理驱动对象模块需要进行替换的第一时间点之间存在延时,因为所述第一时间点一般比所述第二时间点要早,其中,更进一步的说第一时间点为物理驱动对象模块读取到第一帧或者第N帧视频流数据时的时间点,第二时间点为物理驱动模块收到所述替换数据的时间点。那么此时,物理驱动对象模块可将替换数据位到达物理驱动对象模块时,将应用进程读取的视频流数据处理为与所述视频流数据不同的数据,再返回给应用进程。比如,将应用进程读取的视频流数据处理为0,处理为I等情况。优选的,在所述物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块时可包括(I)当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息时,将所述视频流参数信息发送至监控模块。或,(2)当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流参数信息发送至监控模块。一般情况下,应用进程首先会进行视频设备的打开动作,进行一个Connect操作绑定时获取视频设备的视频流参数信息。所述的视频流参数信息包括视频流的压缩格式、视频的高宽、视频每一帧图片的size (尺寸),每一个像素所占的字节数等。对于每种应用进程,其获取的视频流参数信息可能存在不同,比如应用进程A获取的视频的高宽为360*480,而应用进程B获取的视频的高宽为600*800 ;还比应用进程获取的格式信息不同,比如格式YUY2格式、MJPG格式、RGB32格式、1420格式等。因此,相应不同应用进程可能其获取的视频流参数信息不同。那么,此时,物理驱动对象模块可在获取到视频流参数信息时即将其发送监控模块中的监控过滤器,再由监控过滤器发送至监控模块。或者将其首先拦截在物理驱动对象模块中,当应用进程读取到视频流数据时,在与应用进程信息一起发送至监控过滤器,再由监控过滤器发送至监控模块。此时,前述当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流參数信息发送至监控模块时,可将所述视频流数据对应的视频流參数信息和应用进程标识信息发送给监控模块。其中,所述物理驱动对象模块通过分析IPR_MJ_CREATE函数中的消息获取所述视
频流參数信息。其中,在所述监控模块中,依据视频流參数信息将替换数据发送至所述物理驱动对象模块时包括将预置的第一源替换数据转换为与视频流參数信息对应的替换数据,并将替换数据发送至所述物理驱动对象模块。所述与视频流參数信息对应的替换数据为与视频设备输 出的数据类型相同的替换数据,所述第一源替换数据包括待转换的图片数据。因为不同的应用程序读取的视频流參数信息可能不同,那么即需要监控模块依据视频流參数信息,将预置的第一源替换数据转换为与视频设备输出的数据类型相同的替换数据,然后再将替换数据通过监控模块(一般是通过监控模块中的监控过滤器)发送至所述物理驱动对象模块。优选的,在所述监控模块中,依据视频流參数信息将替换数据发送至所述物理驱动对象模块时包括将用户端选择的数据作为监控模块进行处理的第一源替换数据。用户可自定义选择图片等格式数据作为第一源替换数据,即用户可根据自己需求选择图片作为默认底图,在物理驱动模块进行替换时,显示给用户端的即为该默认底图。即将应用进程读取的视频流数据替换为由所述底图作为的摄像头防窥贴,以所述地图作为摄像头的软盖子,保护视频隐私不被窥探。在所述监控模块中,依据视频流參数信息将替换数据发送至所述物理驱动对象模块时包括在接收到视频流參数信息时,将替换数据通过控制模块发送至所述物理驱动对象模块;所述替换数据为与视频流參数信息对应的替换数据;和/或,在接收到应用进程标识信息时,将替换数据通过控制模块发送至所述物理驱动对象模块;所述替换数据为与视频流參数信息对应的替换数据。优选的,所述监控模块还用于发送暂停指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为当前发送给应用进程的数据;和/或,发送阻断指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为替换数据;和/或,发送恢复指令至所述的物理驱动对象模块,控制所述物理驱动对象模块停止将所述视频流数据替换为所述替换数据、和/或停止将所述后续的每帧视频流数据替换为当前发送给应用进程的数据。即监控模块通过特效模块可以实现对当前视频流的随时阻断和暂停等操作。特效模块为监控模块的一部分,其可以向驱动注册过滤器来实现对驱动发送相关的指令。以实现对视频流的暂停功能,即当驱动接受到暂停指令时,将当前帧进行保存,并将该数据替换掉之后的所有视频流帧数据,以视频暂停的功能。阻断功能即将每ー帧的数据替换为我们发给物理驱动对象模块的替换数据。恢复功能,即当发送恢复指令吋,停止以上数据替换,或者停止暂停功能。
优选的,在所述物理驱动对象模块中,依据所述替换数据,将所述视频流数据替换为所述替换数据时包括当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,判断所述监控模块是否已经在控制模块中创建监控过滤器;若是,则调整所述物理驱动对象模块为第一替换模式,用于将所述视频流数据替换为所述替换数据;和/或,当监控模块接收到所述视频流数据对应的应用进程标识信息时,通过所述监控过滤器发送替换指令至所述物理驱动对象模块,调整所述物理驱动对象模块为第二替换模式,用于将所述视频流数据替换为所述替换数据。优选的,所述物理驱动对象模块还用于当所述物理驱动对象模块不能解析所述视频流时,将所述视频流的数据置换为零发送给应用进程。參照图2,示出了本申请ー种计算机视频设备保护方法的流程示意图,包括步骤210,获取视频设备对应的视频流參数信息。实际中,本步骤包括当应用进程视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流參数信息后,将所述视频流參数信息发送给监控模块。在实际中,还包括步骤180,根据系统注册表加载过滤驱动,并在所述过滤驱动中创建控制模块和针对视频设备的物理驱动对象模块。实际中,需要将加载针对视频设备(比如摄像头设备)的过滤驱动(Imagingdevices)。一般情况下,所述过滤驱动的加载是在系统启动时进行加载的,即根据系统注册表进行加载,本申请的过滤驱动加载时在系统注册表中的位置包括“HKEY_L0CAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDDlFC6-810F-11D0-BEC7-08002BE2092F}\UpperFiIters”创建启动服务项,将该驱动服务随机启动(其中,“ CamFilter”为启动服务项名称,可根据实际情况进行修改)启动服务项注册表路径[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CamFilter](其中“CamFilter”为启动服务项名称,可根据实际情况进行修改)" Type" = dword :00000001" Start" = dword :00000001在加载过滤驱动后,在过滤驱动中会针对每个实际的视频设备创建相应的物理驱动对象模块,还会创建ー个控制模块用于接收监控模块控制物理驱动对象模块的指令与数据。另外在实际中,在步骤210之前还包括步骤190,启动监控模块。
步骤200,通过监控模块发送打开命令到视频流过滤驱动打开所述控制模块,并在所述控制模块中创建监控过滤器。即监控模块通过MJ_CREATE函数发送IPR包到视频流过滤驱动后,视频流过滤驱动会首先根据该IPR包中指令和对应控制模块的句柄打开控制模块,同时控制模块会创建ー个空属性的过滤器;然后监控模块再发送ー个创建监控过滤器的指令将该空属性的过滤器创建为监控过滤器。在启动监控模块后,监控模块通过发送指令和数据到所述控制模块中来进行操控。一般情况下,监控模块是通过发送控制指令到控制模块进程操控。在监控模块启动后,监控模块首先会通过MJ_CREATE函数发送ー个IPR_MJ_CREATE请求包到过滤驱动,过滤驱动接收到该请求包后首先会判断该请求包中的设备对象的句柄是否为预置的控制模块的句柄,如果是则发送到控制模块打开控制模块,即打开预置的设备对象句柄,并创建ー个空属性的过滤器;然后监控模块再发送一条控制指令将该空属性的过滤器注册为监控过滤器。实际中,本申请所述的注册是监控模块发送监控的IRP(I/0request packet)请求并被控制模块挂起,等待物理驱动对象模块发送的相关信息,比如视频流參数信息和需要使用视频设备的应用进程标识信息等。当应用进程视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流參数信息后,将所述视频流參数信息发送给监控模块。其中,所述物理驱动对象模块通过分析IPR_MJ_CREATE函数中的消息获取所述视
频流參数信息。其中,所述的视频流參数信息包括视频流的压缩格式、视频的高宽、视频每ー帧图片的size (尺寸),每ー个像素所占的字节数等。对于每种应用进程,其获取的视频流參数信息可能存在不同,比如应用进程A获取的视频的高宽为360*480,而应用进程B获取的视频的高宽为600*800,还比应用进程获取的格式信息不同,比如格式YUY2格式、MJPG格式、RGB32格式、1420格式等。因此,相应不同应用进程可能其获取的视频流參数信息不同。优选的,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流參数信息后,将所述视频流參数信息发送至监控模块时包括步骤S211,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流參数信息时,将所述视频流參数信息发送至监控模块。即在应用进程在通过IPR_MJ_CREATE函数打开视频设备,比如摄像头设备时,会在IPR_MJ_CREATE函数中获取进程访问摄像头设备的视频流參数信息,该信息包括3个GUID 项,分别为 majortype、subtype、formattype,还包括一个 VIDE0INF0HEADER 结构。实际中,在应用进程在通过IPR_MJ_CREATE函数打开视频设备,进行ー个Connect操作绑定时获取到的,其代码可如下hr = m_pGraph- > Connect (m_pCameraOutput, m_pGrabberInput) -J/ 应用程序此时获取视频流息的hr = m_pGraph- > Connect (,m_pGrabber0utput, m_pNul I InputPin)。那么当应用进程在通过IPR_MJ_CREATE打开视频设备获取到视频流參数信息吋, 即可将所述视频流參数信息发送至监控模块。在实际中,物理驱动对象模块获取到视频流參数信息吋,首先将视频流參数信息发送至控制模块,再由控制模块发送至监控模块。
在本步骤中,在获取到视频流參数信息后,具体将所述视频流參数信息发送至监控模块的时机可根据情况选择。比如,在获取到视频流參数信息后,立即将所述视频流參数信息发送至监控模块的时机可根据情况选择;或者在获取到视频流參数信息后,先将其存储于过来驱动对象模块,然后当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,与视频流数据对应的应用进程标识信息一起发送至监控模块。或,步骤S212,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流參数信息发送至监控模块。
本步骤中,当应用进程通过IPR_MJ_CREATE函数中的上述消息获取到视频流參数信息后,将其保留在物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,再将所述视频流參数信息发送至监控模块。步骤220,当读取到视频流数据后,将视频流数据对应的应用进程标识信息发送至监控模块。实际中,本步骤包括当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流数据对应的应用进程标识信息发送给监控模块。其中,所述物理驱动对象模块通过对IPR_MJ_DEVICE_C0NTR0L函数中的I0CTL_KS_READ_STREAM消息分析判断是否有应用进程通过物理驱动对象模块读取视频流。若是,则获取当前应用进程标识信息,将所述视频流数据对应的应用进程标识信息发送给监控模块。当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流參数信息发送至监控模块时包括步骤S221,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第一帧视频流数据时,将所述视频流数据对应的应用进程标识信息发送给监控模块。所述物理驱动对象模块通过对IPR_MJ_DEVICE_C0NTR0L函数中,的I0CTL_KS_READ_STREAM消息进行监控,当有进程读取物理设备的第一帧数据时,获取当前进程的ID及其完整路径,若监控程序已注册监控驱动,则激活为主动拦截模式。或,步骤S221,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第N帧视频流数据时,其中N > 1,将所述视频流数据对应的应用进程标识信息发送给监控模块,并将第N帧之前的每帧视频流数据中的每一字节处理为与所述视频流数据不同的数据。实际中,对于第N帧之前的每帧视频流数据,也可将每帧视频流数据中的部分字节处理为与所述视频流数据不同的数据。对于具体处理方式,本申请不对其加以限制,保证应用进程收到所述视频流数据时,无法显示视频设备真实图像即可。或,步骤S223,当所述物理驱动对象模块不能解析所述视频流时,将所述视频流的数据置换为零发送给应用进程。所述物理驱动对象模块通过对IPR_MJ_DEVICE_C0NTR0L函数中,的I0CTL_KS_READ_STREAM消息进行监控,当有进程读取物理设备的第N帧数据吋,获取当前进程的ID及其完整路径,若监控程序已注册监控驱动,则激活为主动拦截模式。对于第N帧数据之前的数据,则将其处理为与所述视频流数据不同的数据返回给应用进程。比如,将应用进程读取的视频流数据处理为0,处理为I等情況。
其中,当前述步骤S212执行时,在本步骤中,则在将所述视频流数据对应的应用进程标识信息和视频流參数信息发送给监控模块。即在应用进程通过IPR_MJ_CREATE函数获取视频流时可设置ー个开关,当获取到视频流參数信息时,打开该开关保存接收到的信息,比如视频流參数信息。当获取到进程获取第一帧视频流数据或者第N帧视频流数据时,开关将关闭,不再保存其接受到的信息。当该应用进程打开的监控模块的FileOjbect关闭时,再次开启该开关。实际中,物理驱动对象模块接收到监控模块发送的替换数据之前,可能无法及时将应用进程当前读取的视频流数据替换为替换数据,即在监控模块接收到视频流參数信息,再将预置的第一源替换数据处理为替换数据发送到物理驱动对象模块的第二时间点,与物理驱动对象模块需要进行替换的第一时间点之间存在延时,因为第一时间点一般比第ニ时间点要早。那么此时,物理驱动对象模块可将替换数据位到达物理驱动对象模块时,应用进程读取的视频流数据处理为与所述视频流数据不同的数据,再返回给应用进程。比如,将应用进程读取的视频流数据处理为0,处理为I等情況。步骤230,所述监控模块依据视频流參数信息将替换数据发送至所述物理驱动对象模块。其中,本步骤首先会将预置的第一源替换数据转换为与视频流參数信息对应的替换数据,并将替换数据发送至所述物理驱动对象模块。所述与视频流參数信息对应的替换数据为与视频设备输出的数据类型相同的替换数据,所述第一源替换数据包括待转换的图片数据。因为不同的应用程序读取的视频流參数信息可能不同,那么即需要监控模块依据视频流參数信息,将预置的第一源替换数据转换为与视频设备输出的数据类型相同的替换数据,然后再将替换数据通过监控模块(一般是通过监控模块中的监控过滤器)发送至所述物理驱动对象模块。 优选的,在所述监控模块中,依据视频流參数信息将替换数据发送至所述物理驱动对象模块时包括将用户端选择的数据作为监控模块进行处理的第一源替换数据。即用户可自定义选择图片等格式数据作为第一源替换数据。优选的,依据视频流參数信息将替换数据发送至所述物理驱动对象模块时包括步骤S231,在接收到视频流參数信息时,将替换数据通过控制模块发送至所述物理驱动对象模块。本步骤中,即当监控模块接收到视频流參数信息吋,即将替换数据通过控制模块发送至所述物理驱动对象模块,存储在物理驱动对象模块中的配置文件中。和/或,步骤S232,在接收到应用进程标识信息时,将替换数据通过控制模块发送至所述物理驱动对象模块。因为所述如前所述,视频流參数信息发送给监控模块的时机,要么比应用进程发送给监控模块的时机早,要么同时发送。那么如果监控模块接收视频流參数信息的时机早于应用进程的时机时,可先存放于监控模块,等待接收到应用进程的标识信息时,再将替换数据通过控制模块发送至所述物理驱动对象模块。另外,如果当前应用进程只是打开了视频设备,而未读取视频流数据就退出时,可通知监控模块把当前存储的视频流參数信息删除,避免影响后续进程的使用。在上述步骤中,所述应用进程标识信息和视频流參数信息通过监控过滤器发送给监控模块;所述监控过滤器由所述监控模块在控制模块中创建。步骤240,所述物理驱动对象模块依据所述替换数据将所述视频流数据替换为所述替换数据。当应用进程读取视频流后,比如读取第一帧视频流,或者第N帧视频流吋,可通过IOCTL_KS_READ_STREAM中设置的回调函数ReadStream_Rountine,将应用进程读取的视频流数据替换为替换数据。依据所述替换数据,将所述视频流数据替换为所述替换数据时包括步骤S241,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,判断所述监控模块是否已经在控制模块中创建监控过滤器;若是,则调整所述物理驱动对象模块为第一替换模式,用于将所述视频流数据替换为所述替换数据。当监控模块运行后,会设置物理驱动模块为主动监控模式,当有进程打开摄像头设备吋,驱动在没有收到监控模块的拦截指令前将主动拦截,则将原视频流数据修改,如将视频流数据替换为替换数据,或者如将视频流清零,其代码示例如下
case CONTROL—ACTIVATEMONITOR:
{
try
{
if( userien == 0 )
goto UNSUCCESSFUL—RETN;
ProbeForRead( userbuf ,userien , TYPE ALIGNMENT(UCHAR));activate = *(UINT32 *)userbuf;
S etActivateAllMonitor(activate);
}
except( EXCEPTION—EXECUTE—HANDLER)
{
status = GetExceptionCodeQ;
}
}在ReadStream_Rountine的回调函数中,由于主动监控模式的存在,该进程在未 获取用户的选择放行前,将无法读取到每ー帧的数据,其代码示例如下if( (pctx->monitormode 11 pctx->bsetlogo && pctx->bBlockStream ))
{
try
{
sysbuf = GetUBuf( pirp ); syssize = GetUSize( pirp );
if( sysbuf && pctx->nlogousize && ( syssize >=pctx->nlogousize) && pctx->plogobuf)
{
memcpy(sysbuf ,pctx->plogobuf, pctx->nlogousize );
}
else if( sysbuf != NULL)
{
memset(sysbuf, O,syssize);
}
}
except( EXCEPTION—EXECUTE—HANDLER)
{
status = GetExceptionCodeQ;
}
}和/或,步骤S241,当监控模块接收到所述视频流数据对应的应用进程标识信息吋,通过所述监控过滤器发送替换指令至所述物理驱动对象模块,调整所述物理驱动对象模块为第二替换模式,用于将所述视频流数据替换为所述替换数据。所述物理驱动模块也可根据监控模块实时发送的替换指令调整为替换模式。 步骤250,所述监控模块依据所述应用进程标识信息提示用户端是否允许所述应用进程读取视频流数据;当允许所述应用进程读取视频流数据时,监控模块通知所述物理驱动对象模块停止替换。当不允许所述应用进程使用视频设备时,所述物理驱动对象模块维持当前替换模式。另外,本申请还包括通过所述监控模块发送暂停指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为当前发送给应用进程的数据;和/或,通过所述监控模块发送阻断指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为替换数据;和/或,通过所述监控模块发送恢复指令至所述的物理驱动对象模块,控制所述物理驱动对象模块停止将所述视频流数据替换为所述替换数据、和/或停止将所述后续的每帧视频流数据替换为当前发送给应用进程的数据。即监控模块通过特效模块可以实现对当前视频流的随时阻断和暂停等操作。特效模块为监控模块的一部分,其可以向驱动注册过滤器来实现对驱动发送相关的指令。比如实现对视频流的暂停功能,即当物理驱动对象模块接受到暂停指令时,将当前帧进行保存,并将该数据替换掉之后的所有视频流帧数据,以视频暂停的功能。比如实现对视频流的阻断功能,即将每一帧的视频流数据替换为监控模块发给驱动的替换数据。比如实现随时恢复功能,即当发送恢复指令时,停止所述数据替换或者停止暂停动作。另外,在监控模块获取到视频參数信息和应用进程标识信息后,还可根据允许应用进程读取视频流数据的白名单,将应用进程标识信息与所述白名单中的应用进程标识信息进行匹配,如果匹配上,则允许所述应用进程使用所述视频设备,如果未匹配上,则可将预置的源替换数据转换为与视频设备输出的数据类型相同的替换数据并将所述转换后的替换数据和替换指令通过控制模块发送至物理驱动对象模块,当有应用进程通过物理驱动对象模块读取视频流,所述物理驱动对象模块将视频设备发送的视频流的每帧视频数据替换为所述替换数据,并将所述替换数据发送给应用进程。另外,也可结合不允许使用视频设备的黑名单,将应用进程标识信息与黑名单进行匹配,如果匹配上,则直接选择不允许相应应用进程使用视频设备,将视频流替换为相应替换数据。或者,将应用进程标识信息同时与白名单、黑名单进行匹配,如果都没匹配上,则提示用户选择是否允许当前应用进程使用视频设备。对于系统实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处參见方法实施例的部分说明即可。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相參见即可。本申请可用于众多通用或专用的计算系统环境或配置中。例如个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。以上对本申请所提供的一种计算机视频设备保护方法和装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式
及应用范围上均会有改变之处,综上 所述,本说明书内容不应理解为对本申请的限制。
权利要求
1.一种计算机视频设备保护装置,包括视频流过滤驱动和监控模块;其特征在于,包括 所述视频流过滤驱动包括控制模块和物理驱动对象模块; 所述物理驱动对象模块用于 当获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块; 当读取到视频流数据后,将视频流数据对应的应用进程标识信息发送至监控模块; 将所述视频流数据替换为所述替换数据; 所述控制模块用于 将所述视频流参数信息和应用进程标识信息发送给监控模块; 所述监控模块用于 接收所述控制模块发送的应用进程标识信息和视频流参数信息; 依据视频流参数信息将替换数据发送至所述物理驱动对象模块; 依据所述应用进程标识信息提示用户端是否允许所述应用进程使用视频设备; 当允许所述应用进程读取视频流数据时,监控模块通知所述物理驱动对象模块停止替换。
2.根据权利要求I所述的装置,其特征在于,在所述物理驱动对象模块中,当获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块;当读取到视频流数据后,将应用进程对应的应用进程标识信息发送至监控模块时包括 当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块; 当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流数据对应的应用进程标识信息发送至监控模块。
3.根据权利要求I所述的装置,其特征在于,在所述物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流参数信息发送至监控模块时包括 当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第一帧视频流数据时,将所述视频流数据对应的应用进程标识信息发送至监控模块; 或,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第N帧视频流数据时,其中N > 1,将所述视频流数据对应的应用进程标识信息发送至监控模块,并将第N帧之前的每帧视频流数据中的每一字节处理为与所述视频流数据不同的数据; 或,当所述物理驱动对象模块不能解析所述视频流时,将所述视频流的数据置换为零发送给应用进程。
4.根据权利要求I或3所述的装置,其特征在于,在所述物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块时包括 当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息时,将所述视频流参数信息发送至监控模块; 或,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流参数信息发送至监控模块。
5.根据权利要求4所述的装置,其特征在于,在所述监控模块中,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括 在接收到视频流参数信息时,将替换数据通过控制模块发送至所述物理驱动对象模块;所述替换数据为与视频流参数信息对应的替换数据; 和/或,在接收到应用进程标识信息时,将替换数据通过控制模块发送至所述物理驱动对象模块;所述替换数据为与视频流参数信息对应的替换数据。
6.根据权利要求I所述的装置,其特征在于,在所述监控模块中,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括 将预置的第一源替换数据转换为与视频流参数信息对应的替换数据,并将替换数据发送至所述物理驱动对象模块;所述与视频流参数信息对应的替换数据为与视频设备输出的数据类型相同的替换数据,所述第一源替换数据包括待转换的图片数据。
7.根据权利要求6所述的装置,其特征在于,在所述监控模块中,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括 将用户端选择的数据作为监控模块进行处理的第一源替换数据。
8.根据权利要求I所述的装置,其特征在于,所述监控模块还用于 发送暂停指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为当前发送给应用进程的数据; 和/或,发送阻断指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为替换数据; 和/或,发送恢复指令至所述的物理驱动对象模块,控制所述物理驱动对象模块停止将所述视频流数据替换为所述替换数据、和/或停止将所述后续的每帧视频流数据替换为当前发送给应用进程的数据。
9.根据权利要求I所述的装置,其特征在于 所述的控制模块包括监控过滤器;所述监控过滤器由所述监控模块在控制模块中创建,所述应用进程标识信息和视频流参数信息通过所述监控过滤器将发送给监控模块。
10.根据权利要求I所述的装置,其特征在于,在所述物理驱动对象模块中,依据所述替换数据,将所述视频流数据替换为所述替换数据时包括 当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,判断所述监控模块是否已经在控制模块中创建监控过滤器;若是,则调整所述物理驱动对象模块为第一替换模式,用于将所述视频流数据替换为所述替换数据; 和/或,当监控模块接收到所述视频流数据对应的应用进程标识信息时,通过所述监控过滤器发送替换指令至所述物理驱动对象模块,调整所述物理驱动对象模块为第二替换模式,用于将所述视频流数据替换为所述替换数据。
11.根据权利要求I所述的装置,其特征在于,在所述物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息时包括 所述物理驱动对象模块通过分析IPR_MJ_CREATE函数中的消息获取所述视频流参数信息。
12.根据权利要求I所述的装置,其特征在于,在所述物理驱动对象模块中,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据时包括 所述物理驱动对象模块通过对IPR_MJ_DEVICE_CONTROL函数中的IOCTL_KS_READ_STREAM消息分析判断是否有应用进程通过物理驱动对象模块读取视频流; 若是,则获取当前应用进程标识信息,将所述视频流数据对应的应用进程标识信息发送给监控模块。
13.根据权利要求I所述的装置,其特征在于 根据系统注册表加载所述视频流过滤驱动,并在所述视频流过滤驱动中创建控制模块和针对视频设备的物理驱动对象模块。
14.一种计算机视频设备保护方法,其特征在于,包括 获取视频设备对应的视频流参数信息; 当读取到视频流数据后,将视频流数据对应的应用进程标识信息发送至监控模块; 所述监控模块依据视频流参数信息将替换数据发送至所述物理驱动对象模块; 所述物理驱动对象模块依据所述替换数据将所述视频流数据替换为所述替换数据;所述监控模块依据所述应用进程标识信息提示用户端是否允许所述应用进程读取视频流数据;当允许所述应用进程读取视频流数据时,监控模块通知所述物理驱动对象模块停止替换。
15.根据权利要求14所述的方法,其特征在于,获取视频设备对应的视频流参数信息,和当读取到视频流数据后,将视频流数据对应的应用进程标识信息发送至监控模块包括 当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块; 当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流数据对应的应用进程标识信息发送至监控模块。
16.根据权利要求14所述的方法,其特征在于,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流参数信息发送至监控模块时包括 当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第一帧视频流数据时,将所述视频流数据对应的应用进程标识信息发送给监控模块; 或,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到第N帧视频流数据时,其中N > I,将所述视频流数据对应的应用进程标识信息发送给监控模块,并将第N帧之前的每帧视频流数据中的每一字节处理为与所述视频流数据不同的数据。
17.根据权利要求14或16所述的方法,其特征在于,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息后,将所述视频流参数信息发送至监控模块时包括 当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息时,将所述视频流参数信息发送至监控模块; 或,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,将所述视频流参数信息发送至监控模块; 或,当所述物理驱动对象模块不能解析所述视频流时,将所述视频流的数据置换为零发送给应用进程。
18.根据权利要求17所述的方法,其特征在于,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括 在接收到视频流参数信息时,将替换数据通过控制模块发送至所述物理驱动对象模块; 和/或,在接收到应用进程标识信息时,将替换数据通过控制模块发送至所述物理驱动对象模块。
19.根据权利要求14所述的方法,其特征在于,在所述监控模块中,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括 将预置的第一源替换数据转换为与视频流参数信息对应的替换数据,并将替换数据发送至所述物理驱动对象模块;所述与视频流参数信息对应的替换数据为与视频设备输出的数据类型相同的替换数据,所述第一源替换数据包括待转换的图片数据。
20.根据权利要求14所述的方法,其特征在于,依据视频流参数信息将替换数据发送至所述物理驱动对象模块时包括 将用户端选择的数据作为监控模块进行处理的第一源替换数据。
21.根据权利要求14所述的方法,其特征在于,还包括 通过所述监控模块发送暂停指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为当前发送给应用进程的数据; 和/或,通过所述监控模块发送阻断指令至所述物理驱动对象模块,控制所述物理驱动对象模块从当前帧开始,将后续的每帧视频流数据替换为替换数据; 和/或,通过所述监控模块发送恢复指令至所述的物理驱动对象模块,控制所述物理驱动对象模块停止将所述视频流数据替换为所述替换数据、和/或停止将所述后续的每帧视频流数据替换为当前发送给应用进程的数据。
22.根据权利要求14所述的方法,其特征在于 所述应用进程标识信息和视频流参数信息通过监控过滤器发送给监控模块;所述监控过滤器由所述监控模块在控制模块中创建。
23.根据权利要求14所述的方法,其特征在于,依据所述替换数据,将所述视频流数据替换为所述替换数据时包括 当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据后,判断所述监控模块是否已经在控制模块中创建监控过滤器;若是,则调整所述物理驱动对象模块为第一替换模式,用于将所述视频流数据替换为所述替换数据; 和/或,当监控模块接收到所述视频流数据对应的应用进程标识信息时,通过所述监控过滤器发送替换指令至所述物理驱动对象模块,调整所述物理驱动对象模块为第二替换模式,用于将所述视频流数据替换为所述替换数据。
24.根据权利要求14所述的方法,其特征在于,当应用进程通过视频流过滤驱动中的物理驱动对象模块获取视频设备对应的视频流参数信息时包括 所述物理驱动对象模块通过分析IPR_MJ_CREATE函数中的消息获取所述视频流参数信息。
25.根据权利要求14所述的方法,其特征在于,当应用进程通过视频流过滤驱动中的物理驱动对象模块读取到视频流数据时包括 所述物理驱动对象模块通过对IPR_MJ_DEVICE_CONTROL函数中的IOCTL_KS_READ_STREAM消息分析判断是否有应用进程通过物理驱动对象模块读取视频流; 若是,则获取当前应用进程标识信息,将所述视频流数据对应的应用进程标识信息发送给监控模块。
26.根据权利要求14所述的方法,其特征在于,还包括 根据系统注册表加载过滤驱动,并在所述过滤驱动中创建控制模块和针对视频设备的物理驱动对象模块。
全文摘要
本申请提供了一种计算机视频设备保护方法和装置,涉及计算机技术领域。在本申请的处理过程中,对于应用进程的任何一个请求消息包,均没有强行的进行阻断,对于带有视频流数据的请求包,只是将请求包中的视频数据替换为与视频相同格式的替换数据,既没强行的暴力的阻断应用进程和视频设备之间的通讯,也不会破坏应用进程与视频设备之间正常交互的协议,不会导致该应用进程认为视频设备损坏而无法再次访问视频设备,该应用进程不用重启即可重新访问所述视频设备;另外,在本申请中,是在获取到视频设备的视频流数据后再提示用户端选择是否允许进行阻断,不会造成误报的情况。
文档编号G06F21/00GK102663293SQ201210086720
公开日2012年9月12日 申请日期2012年3月28日 优先权日2012年3月28日
发明者秦光远, 范纪鍠 申请人:奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1