專利名稱:一種計(jì)算機(jī)視頻設(shè)備保護(hù)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本申請涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種計(jì)算機(jī)視頻設(shè)備保護(hù)方法和裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,在互聯(lián)網(wǎng)中用戶可以通過視頻設(shè)備(比如攝像頭)與其 他用戶進(jìn)行視頻交互,并且在互聯(lián)網(wǎng)中,許多應(yīng)用程序都可打開視頻設(shè)備,獲取用戶端的視頻信息。在使用過程中,如果一用戶不注意對視頻設(shè)備的管理,互聯(lián)網(wǎng)中其他用戶很可能得到到該用戶不愿意公開的視頻信息,尤其對于黑客來說,很容易就通過遠(yuǎn)程操作控制視頻設(shè)備獲取用戶端的視頻信息?,F(xiàn)有技術(shù)中,對于視頻隱私的保護(hù)技術(shù)是使用windows內(nèi)核HOOK技術(shù)攔截打開攝像頭的進(jìn)程,即當(dāng)有進(jìn)程打開用戶端視頻設(shè)備時(shí),通過內(nèi)核API的HOOK函數(shù)CreateFile函數(shù)和DeviceIoControl函數(shù)阻斷當(dāng)前進(jìn)程發(fā)送給用戶端視頻設(shè)備的請求消息,即鉤取,并彈出提示框等待用戶進(jìn)行處理。在這個(gè)過程中,一旦拒絕HOOK的CreateFile和DeviceIoControl函數(shù),即用戶長時(shí)間不對彈出提示框進(jìn)行處理或者選擇阻斷,所述進(jìn)程無法再次打開視頻設(shè)備,因?yàn)楸┝Φ淖钄嗔藨?yīng)用進(jìn)程和視頻設(shè)備之間的通訊,破壞了應(yīng)用進(jìn)程與視頻設(shè)備之間正常交互的協(xié)議,導(dǎo)致該應(yīng)用進(jìn)程認(rèn)為視頻設(shè)備損壞而無法再次訪問視頻設(shè)備,必須重啟該進(jìn)程方可再次與視頻設(shè)備通訊。
發(fā)明內(nèi)容
本申請所要解決的技術(shù)問題是提供一種計(jì)算機(jī)視頻設(shè)備保護(hù)方法和裝置,使在保護(hù)用戶視頻信息不會(huì)產(chǎn)生進(jìn)程認(rèn)為視頻設(shè)備損壞而無法再次訪問的情況。為了解決上述問題,本申請公開了一種計(jì)算機(jī)視頻設(shè)備保護(hù)裝置,包括視頻流過濾驅(qū)動(dòng)和監(jiān)控模塊;所述視頻流過濾驅(qū)動(dòng)包括控制模塊和物理驅(qū)動(dòng)對象模塊;所述物理驅(qū)動(dòng)對象模塊用于當(dāng)獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;當(dāng)讀取到視頻流數(shù)據(jù)后,將視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊;將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù);所述控制模塊用于將所述視頻流參數(shù)信息和應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊;所述監(jiān)控模塊用于接收所述控制模塊發(fā)送的應(yīng)用進(jìn)程標(biāo)識(shí)信息和視頻流參數(shù)信息;依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊;依據(jù)所述應(yīng)用進(jìn)程標(biāo)識(shí)信息提示用戶端是否允許所述應(yīng)用進(jìn)程使用視頻設(shè)備;
當(dāng)允許所述應(yīng)用進(jìn)程讀取視頻流數(shù)據(jù)時(shí),監(jiān)控模塊通知所述物理驅(qū)動(dòng)對象模塊停止替換。優(yōu)選的,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;當(dāng)讀取到視頻流數(shù)據(jù)后,將應(yīng)用進(jìn)程對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊時(shí)包括當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;
當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊。優(yōu)選的,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)包括當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第一幀視頻流數(shù)據(jù)時(shí),將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊;或,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第N幀視頻流數(shù)據(jù)時(shí),其中N > I,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊,并將第N幀之前的每幀視頻流數(shù)據(jù)中每一字節(jié)處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù);或,當(dāng)所述物理驅(qū)動(dòng)對象模塊不能解析所述視頻流時(shí),將所述視頻流的數(shù)據(jù)置換為零發(fā)送給應(yīng)用進(jìn)程。優(yōu)選的,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)包括當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息時(shí),將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;或,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊。優(yōu)選的,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括在接收到視頻流參數(shù)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述替換數(shù)據(jù)為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù);和/或,在接收到應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述替換數(shù)據(jù)為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù)。優(yōu)選的,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括將預(yù)置的第一源替換數(shù)據(jù)轉(zhuǎn)換為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù),并將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù)為與視頻設(shè)備輸出的數(shù)據(jù)類型相同的替換數(shù)據(jù),所述第一源替換數(shù)據(jù)包括待轉(zhuǎn)換的圖片數(shù)據(jù)。優(yōu)選的,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括將用戶端選擇的數(shù)據(jù)作為監(jiān)控模塊進(jìn)行處理的第一源替換數(shù)據(jù)。
優(yōu)選的,所述監(jiān)控模塊還用于發(fā)送暫停指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù);和/或,發(fā)送阻斷指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流 數(shù)據(jù)替換為替換數(shù)據(jù);和/或,發(fā)送恢復(fù)指令至所述的物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊停止將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)、和/或停止將所述后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù)。優(yōu)選的,所述的控制模塊包括監(jiān)控過濾器;所述監(jiān)控過濾器由所述監(jiān)控模塊在控制模塊中創(chuàng)建,所述應(yīng)用進(jìn)程標(biāo)識(shí)信息和視頻流參數(shù)信息通過所述監(jiān)控過濾器將發(fā)送給監(jiān)控模塊。優(yōu)選的,在所述物理驅(qū)動(dòng)對象模塊中,依據(jù)所述替換數(shù)據(jù),將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)時(shí)包括當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,判斷所述監(jiān)控模塊是否已經(jīng)在控制模塊中創(chuàng)建監(jiān)控過濾器;若是,則調(diào)整所述物理驅(qū)動(dòng)對象模塊為第一替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù);和/或,當(dāng)監(jiān)控模塊接收到所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),通過所述監(jiān)控過濾器發(fā)送替換指令至所述物理驅(qū)動(dòng)對象模塊,調(diào)整所述物理驅(qū)動(dòng)對象模塊為第二替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)。優(yōu)選的,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息時(shí)包括所述物理驅(qū)動(dòng)對象模塊通過分析IPR_MJ_CREATE函數(shù)中的消息獲取所述視頻流
參數(shù)信息。優(yōu)選的,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)時(shí)包括所述物理驅(qū)動(dòng)對象模塊通過對IPR_MJ_DEVICE_C0NTR0L函數(shù)中的I0CTL_KS_READ_STREAM消息分析判斷是否有應(yīng)用進(jìn)程通過物理驅(qū)動(dòng)對象模塊讀取視頻流;若是,則獲取當(dāng)前應(yīng)用進(jìn)程標(biāo)識(shí)信息,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊。優(yōu)選的,根據(jù)系統(tǒng)注冊表加載所述視頻流過濾驅(qū)動(dòng),并在所述視頻流過濾驅(qū)動(dòng)中創(chuàng)建控制模塊和針對視頻設(shè)備的物理驅(qū)動(dòng)對象模塊。相應(yīng)的,本申請還公開了一種計(jì)算機(jī)視頻設(shè)備保護(hù)方法,包括獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息;當(dāng)讀取到視頻流數(shù)據(jù)后,將視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊;所述監(jiān)控模塊依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述物理驅(qū)動(dòng)對象模塊依據(jù)所述替換數(shù)據(jù)將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù);所述監(jiān)控模塊依據(jù)所述應(yīng)用進(jìn)程標(biāo)識(shí)信息提示用戶端是否允許所述應(yīng)用進(jìn)程讀取視頻流數(shù)據(jù);當(dāng)允許所述應(yīng)用進(jìn)程讀取視頻流數(shù)據(jù)時(shí),監(jiān)控模塊通知所述物理驅(qū)動(dòng)對象模塊停止替換。優(yōu)選的,獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息,和當(dāng)讀取到視頻流數(shù)據(jù)后,將視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊包括當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊。優(yōu)選的,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)包括 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第一幀視頻流數(shù)據(jù)時(shí),將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊;或,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第N幀視頻流數(shù)據(jù)時(shí),其中N > I,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊,并將第N幀之前的每幀視頻流數(shù)據(jù)中每一字節(jié)處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù)。優(yōu)選的,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)包括當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息時(shí),將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;或,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;或,當(dāng)所述物理驅(qū)動(dòng)對象模塊不能解析所述視頻流時(shí),將所述視頻流的數(shù)據(jù)置換為零發(fā)送給應(yīng)用進(jìn)程。優(yōu)選的,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括在接收到視頻流參數(shù)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊;和/或,在接收到應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊。優(yōu)選的,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括將預(yù)置的第一源替換數(shù)據(jù)轉(zhuǎn)換為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù),并將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù)為與視頻設(shè)備輸出的數(shù)據(jù)類型相同的替換數(shù)據(jù),所述第一源替換數(shù)據(jù)包括待轉(zhuǎn)換的圖片數(shù)據(jù)。優(yōu)選的,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括將用戶端選擇的數(shù)據(jù)作為監(jiān)控模塊進(jìn)行處理的第一源替換數(shù)據(jù)。優(yōu)選的,還包括通過所述監(jiān)控模塊發(fā)送暫停指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù);和/或,通過所述監(jiān)控模塊發(fā)送阻斷指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為替換數(shù)據(jù);和/或,通過所述監(jiān)控模塊發(fā)送恢復(fù)指令至所述的物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊停止將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)、和/或停止將所述后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù)。優(yōu)選的,所述應(yīng)用進(jìn)程標(biāo)識(shí)信息和視頻流參數(shù)信息通過監(jiān)控過濾器發(fā)送給監(jiān)控模塊;所述監(jiān)控過濾器由所述監(jiān)控模塊在控制模塊中創(chuàng)建。
優(yōu)選的,依據(jù)所述替換數(shù)據(jù),將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)時(shí)包括當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,判斷所述監(jiān)控模塊是否已經(jīng)在控制模塊中創(chuàng)建監(jiān)控過濾器;若是,則調(diào)整所述物理驅(qū)動(dòng)對象模塊為第一替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù);和/或,當(dāng)監(jiān)控模塊接收到所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),通過所述監(jiān)控過濾器發(fā)送替換指令至所述物理驅(qū)動(dòng)對象模塊,調(diào)整所述物理驅(qū)動(dòng)對象模塊為第二替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)。優(yōu)選的,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息時(shí)包括所述物理驅(qū)動(dòng)對象模塊通過分析IPR_MJ_CREATE函數(shù)中的消息獲取所述視頻流
參數(shù)信息。優(yōu)選的,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)時(shí)包括所述物理驅(qū)動(dòng)對象模塊通過對IPR_MJ_DEVICE_C0NTR0L函數(shù)中的I0CTL_KS_READ_STREAM消息分析判斷是否有應(yīng)用進(jìn)程通過物理驅(qū)動(dòng)對象模塊讀取視頻流;若是,則獲取當(dāng)前應(yīng)用進(jìn)程標(biāo)識(shí)信息,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊。優(yōu)選的,還包括根據(jù)系統(tǒng)注冊表加載過濾驅(qū)動(dòng),并在所述過濾驅(qū)動(dòng)中創(chuàng)建控制模塊和針對視頻設(shè)備的物理驅(qū)動(dòng)對象模塊。與現(xiàn)有技術(shù)相比,本申請包括以下優(yōu)點(diǎn)本申請?jiān)谶^濾驅(qū)動(dòng)中創(chuàng)建控制模塊和針對實(shí)際視頻設(shè)備的物理驅(qū)動(dòng)對象模塊,所述控制模塊接收監(jiān)控模塊發(fā)送的替換數(shù)據(jù),并轉(zhuǎn)發(fā)監(jiān)控模塊發(fā)送給物理驅(qū)動(dòng)對象模塊的替換數(shù)據(jù);本申請利用上述物理驅(qū)動(dòng)對象模塊將視頻設(shè)備的視頻流替換為與視頻流數(shù)據(jù)類型相同的替換數(shù)據(jù)返回給應(yīng)用進(jìn)程,在本申請的處理過程中,對于應(yīng)用進(jìn)程的任何一個(gè)請求消息包,均沒有強(qiáng)行的進(jìn)行阻斷,對于帶有視頻流數(shù)據(jù)的請求包,只是將請求包中的視頻數(shù)據(jù)替換為與視頻相同格式的替換數(shù)據(jù),既沒強(qiáng)行的暴力的阻斷應(yīng)用進(jìn)程和視頻設(shè)備之間的通訊,也不會(huì)破壞應(yīng)用進(jìn)程與視頻設(shè)備之間正常交互的協(xié)議,不會(huì)導(dǎo)致該應(yīng)用進(jìn)程認(rèn)為視頻設(shè)備損壞而無法再次訪問視頻設(shè)備,該應(yīng)用進(jìn)程不用重啟即可重新訪問所述視頻設(shè)備;另外,在本申請中,是在獲取到視頻設(shè)備的視頻流數(shù)據(jù)后再提示用戶端選擇是否允許進(jìn)行阻斷,不會(huì)造成誤報(bào)的情況。
圖I是本申請一種計(jì)算機(jī)視頻設(shè)備保護(hù)裝置的結(jié)構(gòu)示意圖2是本申請一種計(jì)算機(jī)視頻設(shè)備保護(hù)方法的流程示意圖。
具體實(shí)施例方式為使本申請的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對本申請作進(jìn)一步詳細(xì)的說明。為使本申請的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對本申請作進(jìn)一步詳細(xì)的說明。在windows系統(tǒng)中,如果設(shè)置了過濾驅(qū)動(dòng),則所有訪問實(shí)際設(shè)備的消息和實(shí)際設(shè)備返回的消息都需要經(jīng)過過濾驅(qū)動(dòng)。本申請?jiān)趙indows過濾驅(qū)動(dòng)的機(jī)制下添加了一層視頻流過濾驅(qū)動(dòng),那么即可在過視頻流濾過驅(qū)動(dòng)中對與視頻設(shè)備交互的消息進(jìn)行處理,不必阻斷應(yīng)用進(jìn)程的消息循環(huán),而不必直接通過HOOK函數(shù)直接阻斷進(jìn)程的消息循環(huán),從而破壞應(yīng)用進(jìn)程與視頻設(shè)備之間正常的通訊協(xié)議,避免了阻斷后應(yīng)用程序無法再次打開的情況,使應(yīng)用進(jìn)程可以多次進(jìn)行正常訪問視頻設(shè)備。參照圖1,其示出了本申請一種計(jì)算機(jī)視頻設(shè)備保護(hù)裝置的結(jié)構(gòu)示意圖,包括視頻流過濾驅(qū)動(dòng)110和監(jiān)控模塊120 ;所述視頻流過濾驅(qū)動(dòng)包括控制模塊111和物理驅(qū)動(dòng)對象模塊112 ;所述物理驅(qū)動(dòng)對象模塊112用于當(dāng)獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;當(dāng)讀取到視頻流數(shù)據(jù)后,將視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊;依據(jù)所述替換數(shù)據(jù),將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù);所述控制模塊111用于將所述視頻流參數(shù)信息和應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊;所述監(jiān)控模塊120用于接收所述控制模塊發(fā)送的應(yīng)用進(jìn)程標(biāo)識(shí)信息和視頻流參數(shù)信息;依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊;依據(jù)所述應(yīng)用進(jìn)程標(biāo)識(shí)信息提示用戶端是否允許所述應(yīng)用進(jìn)程使用視頻設(shè)備;當(dāng)允許所述應(yīng)用進(jìn)程讀取視頻流數(shù)據(jù)時(shí),監(jiān)控模塊通知所述物理驅(qū)動(dòng)對象模塊停止替換。在本申請中,系統(tǒng)首先會(huì)加載視頻流過濾驅(qū)動(dòng),即根據(jù)系統(tǒng)注冊表加載所述視頻流過濾驅(qū)動(dòng),并在所述視頻流過濾驅(qū)動(dòng)中創(chuàng)建控制模塊和針對視頻設(shè)備的物理驅(qū)動(dòng)對象模塊。實(shí)際中,需要將加載針對視頻設(shè)備(比如攝像頭設(shè)備)的視頻流過濾驅(qū)動(dòng)(Imaging devices),并在所述過濾驅(qū)動(dòng)中創(chuàng)建控制模塊和針對視頻設(shè)備的設(shè)備對象。一般情況下,所述過濾驅(qū)動(dòng)的加載是在系統(tǒng)啟動(dòng)時(shí)進(jìn)行加載的,即根據(jù)系統(tǒng)注冊表進(jìn)行加載,本申請的過濾驅(qū)動(dòng)加載時(shí)在系統(tǒng)注冊表中的位置包括 “HKEY_L0CAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDDlFC6-810F-11D0-BEC7-08002BE2092F}\UpperFiIters”
創(chuàng)建啟動(dòng)服務(wù)項(xiàng),將該驅(qū)動(dòng)服務(wù)隨機(jī)啟動(dòng)(其中,“CamFilter”為啟動(dòng)服務(wù)項(xiàng)名稱,可根據(jù)實(shí)際情況進(jìn)行修改)啟動(dòng)服務(wù)項(xiàng)注冊表路徑[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CamFilter]" Type" = dword :00000001" Start" = dword :00000001在加載過濾驅(qū)動(dòng)后,在過濾驅(qū)動(dòng)中會(huì)針對每個(gè)實(shí)際的視頻設(shè)備創(chuàng)建相應(yīng)的物理驅(qū)動(dòng)對象模塊,還會(huì)創(chuàng)建一個(gè)控制模塊用于接收監(jiān)控模塊的指令與數(shù)據(jù)。另外,在監(jiān)控模塊啟動(dòng)時(shí),會(huì)打開視頻流過濾驅(qū)動(dòng)中的控制模塊,同時(shí)在控制模塊 中注冊一個(gè)監(jiān)控過濾器,即所述的控制模塊包括監(jiān)控過濾器;所述監(jiān)控過濾器由所述監(jiān)控模塊在控制模塊中創(chuàng)建,所述應(yīng)用進(jìn)程標(biāo)識(shí)信息和視頻流參數(shù)信息通過所述監(jiān)控過濾器發(fā)送給監(jiān)控模塊。在監(jiān)控模塊啟動(dòng)后,監(jiān)控模塊首先會(huì)通過MJ_CREATE函數(shù)發(fā)送一個(gè)IPR_MJ_CREATE請求包到過濾驅(qū)動(dòng),過濾驅(qū)動(dòng)接收到該請求包后首先會(huì)判斷該請求包中的設(shè)備對象的句柄是否為預(yù)置的控制模塊的句柄,所述控制模塊的句柄為所述控制模塊的名稱;如果是,則發(fā)送到控制模塊打開控制模塊,即打開預(yù)置的設(shè)備對象句柄,并創(chuàng)建一個(gè)空屬性的過濾器;然后監(jiān)控模塊再發(fā)送一條控制指令將該空屬性的過濾器注冊為監(jiān)控過濾器,實(shí)際中,本申請所述的注冊是監(jiān)控模塊發(fā)送監(jiān)控的IRP (I/O request packet)請求并被控制模塊掛起,等待物理驅(qū)動(dòng)對象模塊發(fā)送的相關(guān)信息,比如視頻流參數(shù)信息和需要使用視頻設(shè)備的應(yīng)用進(jìn)程標(biāo)識(shí)信息等。其中,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;當(dāng)讀取到視頻流數(shù)據(jù)后,將應(yīng)用進(jìn)程對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊時(shí)包括當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;在獲取到視頻流參數(shù)信息后,具體將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊的時(shí)機(jī)可根據(jù)情況選擇。比如,在獲取到視頻流參數(shù)信息后,立即將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊的時(shí)機(jī)可根據(jù)情況選擇;或者在獲取到視頻流參數(shù)信息后,先將其存儲(chǔ)于過來驅(qū)動(dòng)對象模塊,然后當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,與視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息一起發(fā)送至監(jiān)控模塊。當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊。優(yōu)選的,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)一般可包括(I),當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第一幀視頻流數(shù)據(jù)時(shí),將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊?;?,(2)當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第N幀視頻流數(shù)據(jù)時(shí),其中N > 1,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊,并將第N幀之前的每幀視頻流數(shù)據(jù)中的每一字節(jié)處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù)。實(shí)際中,對于第N幀之前的每幀視頻流數(shù)據(jù),也可將每幀視頻流數(shù)據(jù)中的部分字節(jié)處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù)。對于具體處理方式,本申請不對其加以限制,保證應(yīng)用進(jìn)程收到所述視頻流數(shù)據(jù)時(shí),無法顯示視頻設(shè)備真實(shí)圖像即可?;?,(3)當(dāng)所述物理驅(qū)動(dòng)對象模塊不能解析所述視頻流時(shí),將所述視頻流的數(shù)據(jù)置換為零發(fā)送給應(yīng)用進(jìn)程。 比如,當(dāng)視頻設(shè)備發(fā)送的視頻流到第10幀時(shí),應(yīng)用進(jìn)程讀取到第10幀時(shí)再將應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊。一般情況下,是通過控制模塊中的監(jiān)控過濾器發(fā)送至監(jiān)控模塊。其中,所述物理驅(qū)動(dòng)對象模塊通過對IPR_MJ_DEVICE_C0NTR0L函數(shù)中的I0CTL_KS_READ_STREAM消息分析判斷是否有應(yīng)用進(jìn)程通過物理驅(qū)動(dòng)對象模塊讀取視頻流;若是,則獲取當(dāng)前應(yīng)用進(jìn)程標(biāo)識(shí)信息,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊。實(shí)際中,物理驅(qū)動(dòng)對象模塊接收到監(jiān)控模塊發(fā)送的替換數(shù)據(jù)之前,可能無法及時(shí)將應(yīng)用進(jìn)程當(dāng)前讀取的視頻流數(shù)據(jù)替換為替換數(shù)據(jù),即在監(jiān)控模塊接收到視頻流參數(shù)信息,再將預(yù)置的第一源替換數(shù)據(jù)處理為替換數(shù)據(jù)發(fā)送到物理驅(qū)動(dòng)對象模塊的第二時(shí)間點(diǎn),與物理驅(qū)動(dòng)對象模塊需要進(jìn)行替換的第一時(shí)間點(diǎn)之間存在延時(shí),因?yàn)樗龅谝粫r(shí)間點(diǎn)一般比所述第二時(shí)間點(diǎn)要早,其中,更進(jìn)一步的說第一時(shí)間點(diǎn)為物理驅(qū)動(dòng)對象模塊讀取到第一幀或者第N幀視頻流數(shù)據(jù)時(shí)的時(shí)間點(diǎn),第二時(shí)間點(diǎn)為物理驅(qū)動(dòng)模塊收到所述替換數(shù)據(jù)的時(shí)間點(diǎn)。那么此時(shí),物理驅(qū)動(dòng)對象模塊可將替換數(shù)據(jù)位到達(dá)物理驅(qū)動(dòng)對象模塊時(shí),將應(yīng)用進(jìn)程讀取的視頻流數(shù)據(jù)處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù),再返回給應(yīng)用進(jìn)程。比如,將應(yīng)用進(jìn)程讀取的視頻流數(shù)據(jù)處理為0,處理為I等情況。優(yōu)選的,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)可包括(I)當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息時(shí),將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊。或,(2)當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊。一般情況下,應(yīng)用進(jìn)程首先會(huì)進(jìn)行視頻設(shè)備的打開動(dòng)作,進(jìn)行一個(gè)Connect操作綁定時(shí)獲取視頻設(shè)備的視頻流參數(shù)信息。所述的視頻流參數(shù)信息包括視頻流的壓縮格式、視頻的高寬、視頻每一幀圖片的size (尺寸),每一個(gè)像素所占的字節(jié)數(shù)等。對于每種應(yīng)用進(jìn)程,其獲取的視頻流參數(shù)信息可能存在不同,比如應(yīng)用進(jìn)程A獲取的視頻的高寬為360*480,而應(yīng)用進(jìn)程B獲取的視頻的高寬為600*800 ;還比應(yīng)用進(jìn)程獲取的格式信息不同,比如格式Y(jié)UY2格式、MJPG格式、RGB32格式、1420格式等。因此,相應(yīng)不同應(yīng)用進(jìn)程可能其獲取的視頻流參數(shù)信息不同。那么,此時(shí),物理驅(qū)動(dòng)對象模塊可在獲取到視頻流參數(shù)信息時(shí)即將其發(fā)送監(jiān)控模塊中的監(jiān)控過濾器,再由監(jiān)控過濾器發(fā)送至監(jiān)控模塊?;蛘邔⑵涫紫葦r截在物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程讀取到視頻流數(shù)據(jù)時(shí),在與應(yīng)用進(jìn)程信息一起發(fā)送至監(jiān)控過濾器,再由監(jiān)控過濾器發(fā)送至監(jiān)控模塊。此時(shí),前述當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí),可將所述視頻流數(shù)據(jù)對應(yīng)的視頻流參數(shù)信息和應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊。其中,所述物理驅(qū)動(dòng)對象模塊通過分析IPR_MJ_CREATE函數(shù)中的消息獲取所述視
頻流參數(shù)信息。其中,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括將預(yù)置的第一源替換數(shù)據(jù)轉(zhuǎn)換為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù),并將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊。所述與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù)為與視頻設(shè)備輸 出的數(shù)據(jù)類型相同的替換數(shù)據(jù),所述第一源替換數(shù)據(jù)包括待轉(zhuǎn)換的圖片數(shù)據(jù)。因?yàn)椴煌膽?yīng)用程序讀取的視頻流參數(shù)信息可能不同,那么即需要監(jiān)控模塊依據(jù)視頻流參數(shù)信息,將預(yù)置的第一源替換數(shù)據(jù)轉(zhuǎn)換為與視頻設(shè)備輸出的數(shù)據(jù)類型相同的替換數(shù)據(jù),然后再將替換數(shù)據(jù)通過監(jiān)控模塊(一般是通過監(jiān)控模塊中的監(jiān)控過濾器)發(fā)送至所述物理驅(qū)動(dòng)對象模塊。優(yōu)選的,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括將用戶端選擇的數(shù)據(jù)作為監(jiān)控模塊進(jìn)行處理的第一源替換數(shù)據(jù)。用戶可自定義選擇圖片等格式數(shù)據(jù)作為第一源替換數(shù)據(jù),即用戶可根據(jù)自己需求選擇圖片作為默認(rèn)底圖,在物理驅(qū)動(dòng)模塊進(jìn)行替換時(shí),顯示給用戶端的即為該默認(rèn)底圖。即將應(yīng)用進(jìn)程讀取的視頻流數(shù)據(jù)替換為由所述底圖作為的攝像頭防窺貼,以所述地圖作為攝像頭的軟蓋子,保護(hù)視頻隱私不被窺探。在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括在接收到視頻流參數(shù)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述替換數(shù)據(jù)為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù);和/或,在接收到應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述替換數(shù)據(jù)為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù)。優(yōu)選的,所述監(jiān)控模塊還用于發(fā)送暫停指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù);和/或,發(fā)送阻斷指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為替換數(shù)據(jù);和/或,發(fā)送恢復(fù)指令至所述的物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊停止將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)、和/或停止將所述后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù)。即監(jiān)控模塊通過特效模塊可以實(shí)現(xiàn)對當(dāng)前視頻流的隨時(shí)阻斷和暫停等操作。特效模塊為監(jiān)控模塊的一部分,其可以向驅(qū)動(dòng)注冊過濾器來實(shí)現(xiàn)對驅(qū)動(dòng)發(fā)送相關(guān)的指令。以實(shí)現(xiàn)對視頻流的暫停功能,即當(dāng)驅(qū)動(dòng)接受到暫停指令時(shí),將當(dāng)前幀進(jìn)行保存,并將該數(shù)據(jù)替換掉之后的所有視頻流幀數(shù)據(jù),以視頻暫停的功能。阻斷功能即將每ー幀的數(shù)據(jù)替換為我們發(fā)給物理驅(qū)動(dòng)對象模塊的替換數(shù)據(jù)。恢復(fù)功能,即當(dāng)發(fā)送恢復(fù)指令吋,停止以上數(shù)據(jù)替換,或者停止暫停功能。
優(yōu)選的,在所述物理驅(qū)動(dòng)對象模塊中,依據(jù)所述替換數(shù)據(jù),將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)時(shí)包括當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,判斷所述監(jiān)控模塊是否已經(jīng)在控制模塊中創(chuàng)建監(jiān)控過濾器;若是,則調(diào)整所述物理驅(qū)動(dòng)對象模塊為第一替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù);和/或,當(dāng)監(jiān)控模塊接收到所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),通過所述監(jiān)控過濾器發(fā)送替換指令至所述物理驅(qū)動(dòng)對象模塊,調(diào)整所述物理驅(qū)動(dòng)對象模塊為第二替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)。優(yōu)選的,所述物理驅(qū)動(dòng)對象模塊還用于當(dāng)所述物理驅(qū)動(dòng)對象模塊不能解析所述視頻流時(shí),將所述視頻流的數(shù)據(jù)置換為零發(fā)送給應(yīng)用進(jìn)程。參照圖2,示出了本申請ー種計(jì)算機(jī)視頻設(shè)備保護(hù)方法的流程示意圖,包括步驟210,獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息。實(shí)際中,本步驟包括當(dāng)應(yīng)用進(jìn)程視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送給監(jiān)控模塊。在實(shí)際中,還包括步驟180,根據(jù)系統(tǒng)注冊表加載過濾驅(qū)動(dòng),并在所述過濾驅(qū)動(dòng)中創(chuàng)建控制模塊和針對視頻設(shè)備的物理驅(qū)動(dòng)對象模塊。實(shí)際中,需要將加載針對視頻設(shè)備(比如攝像頭設(shè)備)的過濾驅(qū)動(dòng)(Imagingdevices)。一般情況下,所述過濾驅(qū)動(dòng)的加載是在系統(tǒng)啟動(dòng)時(shí)進(jìn)行加載的,即根據(jù)系統(tǒng)注冊表進(jìn)行加載,本申請的過濾驅(qū)動(dòng)加載時(shí)在系統(tǒng)注冊表中的位置包括“HKEY_L0CAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDDlFC6-810F-11D0-BEC7-08002BE2092F}\UpperFiIters”創(chuàng)建啟動(dòng)服務(wù)項(xiàng),將該驅(qū)動(dòng)服務(wù)隨機(jī)啟動(dòng)(其中,“ CamFilter”為啟動(dòng)服務(wù)項(xiàng)名稱,可根據(jù)實(shí)際情況進(jìn)行修改)啟動(dòng)服務(wù)項(xiàng)注冊表路徑[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CamFilter](其中“CamFilter”為啟動(dòng)服務(wù)項(xiàng)名稱,可根據(jù)實(shí)際情況進(jìn)行修改)" Type" = dword :00000001" Start" = dword :00000001在加載過濾驅(qū)動(dòng)后,在過濾驅(qū)動(dòng)中會(huì)針對每個(gè)實(shí)際的視頻設(shè)備創(chuàng)建相應(yīng)的物理驅(qū)動(dòng)對象模塊,還會(huì)創(chuàng)建ー個(gè)控制模塊用于接收監(jiān)控模塊控制物理驅(qū)動(dòng)對象模塊的指令與數(shù)據(jù)。另外在實(shí)際中,在步驟210之前還包括步驟190,啟動(dòng)監(jiān)控模塊。
步驟200,通過監(jiān)控模塊發(fā)送打開命令到視頻流過濾驅(qū)動(dòng)打開所述控制模塊,并在所述控制模塊中創(chuàng)建監(jiān)控過濾器。即監(jiān)控模塊通過MJ_CREATE函數(shù)發(fā)送IPR包到視頻流過濾驅(qū)動(dòng)后,視頻流過濾驅(qū)動(dòng)會(huì)首先根據(jù)該IPR包中指令和對應(yīng)控制模塊的句柄打開控制模塊,同時(shí)控制模塊會(huì)創(chuàng)建ー個(gè)空屬性的過濾器;然后監(jiān)控模塊再發(fā)送ー個(gè)創(chuàng)建監(jiān)控過濾器的指令將該空屬性的過濾器創(chuàng)建為監(jiān)控過濾器。在啟動(dòng)監(jiān)控模塊后,監(jiān)控模塊通過發(fā)送指令和數(shù)據(jù)到所述控制模塊中來進(jìn)行操控。一般情況下,監(jiān)控模塊是通過發(fā)送控制指令到控制模塊進(jìn)程操控。在監(jiān)控模塊啟動(dòng)后,監(jiān)控模塊首先會(huì)通過MJ_CREATE函數(shù)發(fā)送ー個(gè)IPR_MJ_CREATE請求包到過濾驅(qū)動(dòng),過濾驅(qū)動(dòng)接收到該請求包后首先會(huì)判斷該請求包中的設(shè)備對象的句柄是否為預(yù)置的控制模塊的句柄,如果是則發(fā)送到控制模塊打開控制模塊,即打開預(yù)置的設(shè)備對象句柄,并創(chuàng)建ー個(gè)空屬性的過濾器;然后監(jiān)控模塊再發(fā)送一條控制指令將該空屬性的過濾器注冊為監(jiān)控過濾器。實(shí)際中,本申請所述的注冊是監(jiān)控模塊發(fā)送監(jiān)控的IRP(I/0request packet)請求并被控制模塊掛起,等待物理驅(qū)動(dòng)對象模塊發(fā)送的相關(guān)信息,比如視頻流參數(shù)信息和需要使用視頻設(shè)備的應(yīng)用進(jìn)程標(biāo)識(shí)信息等。當(dāng)應(yīng)用進(jìn)程視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送給監(jiān)控模塊。其中,所述物理驅(qū)動(dòng)對象模塊通過分析IPR_MJ_CREATE函數(shù)中的消息獲取所述視
頻流參數(shù)信息。其中,所述的視頻流參數(shù)信息包括視頻流的壓縮格式、視頻的高寬、視頻每ー幀圖片的size (尺寸),每ー個(gè)像素所占的字節(jié)數(shù)等。對于每種應(yīng)用進(jìn)程,其獲取的視頻流參數(shù)信息可能存在不同,比如應(yīng)用進(jìn)程A獲取的視頻的高寬為360*480,而應(yīng)用進(jìn)程B獲取的視頻的高寬為600*800,還比應(yīng)用進(jìn)程獲取的格式信息不同,比如格式Y(jié)UY2格式、MJPG格式、RGB32格式、1420格式等。因此,相應(yīng)不同應(yīng)用進(jìn)程可能其獲取的視頻流參數(shù)信息不同。優(yōu)選的,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)包括步驟S211,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息時(shí),將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊。即在應(yīng)用進(jìn)程在通過IPR_MJ_CREATE函數(shù)打開視頻設(shè)備,比如攝像頭設(shè)備時(shí),會(huì)在IPR_MJ_CREATE函數(shù)中獲取進(jìn)程訪問攝像頭設(shè)備的視頻流參數(shù)信息,該信息包括3個(gè)GUID 項(xiàng),分別為 majortype、subtype、formattype,還包括一個(gè) VIDE0INF0HEADER 結(jié)構(gòu)。實(shí)際中,在應(yīng)用進(jìn)程在通過IPR_MJ_CREATE函數(shù)打開視頻設(shè)備,進(jìn)行ー個(gè)Connect操作綁定時(shí)獲取到的,其代碼可如下hr = m_pGraph- > Connect (m_pCameraOutput, m_pGrabberInput) -J/ 應(yīng)用程序此時(shí)獲取視頻流息的hr = m_pGraph- > Connect (,m_pGrabber0utput, m_pNul I InputPin)。那么當(dāng)應(yīng)用進(jìn)程在通過IPR_MJ_CREATE打開視頻設(shè)備獲取到視頻流參數(shù)信息吋, 即可將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊。在實(shí)際中,物理驅(qū)動(dòng)對象模塊獲取到視頻流參數(shù)信息吋,首先將視頻流參數(shù)信息發(fā)送至控制模塊,再由控制模塊發(fā)送至監(jiān)控模塊。
在本步驟中,在獲取到視頻流參數(shù)信息后,具體將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊的時(shí)機(jī)可根據(jù)情況選擇。比如,在獲取到視頻流參數(shù)信息后,立即將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊的時(shí)機(jī)可根據(jù)情況選擇;或者在獲取到視頻流參數(shù)信息后,先將其存儲(chǔ)于過來驅(qū)動(dòng)對象模塊,然后當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,與視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息一起發(fā)送至監(jiān)控模塊?;颍襟ES212,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊。
本步驟中,當(dāng)應(yīng)用進(jìn)程通過IPR_MJ_CREATE函數(shù)中的上述消息獲取到視頻流參數(shù)信息后,將其保留在物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,再將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊。步驟220,當(dāng)讀取到視頻流數(shù)據(jù)后,將視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊。實(shí)際中,本步驟包括當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊。其中,所述物理驅(qū)動(dòng)對象模塊通過對IPR_MJ_DEVICE_C0NTR0L函數(shù)中的I0CTL_KS_READ_STREAM消息分析判斷是否有應(yīng)用進(jìn)程通過物理驅(qū)動(dòng)對象模塊讀取視頻流。若是,則獲取當(dāng)前應(yīng)用進(jìn)程標(biāo)識(shí)信息,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊。當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)包括步驟S221,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第一幀視頻流數(shù)據(jù)時(shí),將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊。所述物理驅(qū)動(dòng)對象模塊通過對IPR_MJ_DEVICE_C0NTR0L函數(shù)中,的I0CTL_KS_READ_STREAM消息進(jìn)行監(jiān)控,當(dāng)有進(jìn)程讀取物理設(shè)備的第一幀數(shù)據(jù)時(shí),獲取當(dāng)前進(jìn)程的ID及其完整路徑,若監(jiān)控程序已注冊監(jiān)控驅(qū)動(dòng),則激活為主動(dòng)攔截模式。或,步驟S221,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第N幀視頻流數(shù)據(jù)時(shí),其中N > 1,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊,并將第N幀之前的每幀視頻流數(shù)據(jù)中的每一字節(jié)處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù)。實(shí)際中,對于第N幀之前的每幀視頻流數(shù)據(jù),也可將每幀視頻流數(shù)據(jù)中的部分字節(jié)處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù)。對于具體處理方式,本申請不對其加以限制,保證應(yīng)用進(jìn)程收到所述視頻流數(shù)據(jù)時(shí),無法顯示視頻設(shè)備真實(shí)圖像即可?;?,步驟S223,當(dāng)所述物理驅(qū)動(dòng)對象模塊不能解析所述視頻流時(shí),將所述視頻流的數(shù)據(jù)置換為零發(fā)送給應(yīng)用進(jìn)程。所述物理驅(qū)動(dòng)對象模塊通過對IPR_MJ_DEVICE_C0NTR0L函數(shù)中,的I0CTL_KS_READ_STREAM消息進(jìn)行監(jiān)控,當(dāng)有進(jìn)程讀取物理設(shè)備的第N幀數(shù)據(jù)吋,獲取當(dāng)前進(jìn)程的ID及其完整路徑,若監(jiān)控程序已注冊監(jiān)控驅(qū)動(dòng),則激活為主動(dòng)攔截模式。對于第N幀數(shù)據(jù)之前的數(shù)據(jù),則將其處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù)返回給應(yīng)用進(jìn)程。比如,將應(yīng)用進(jìn)程讀取的視頻流數(shù)據(jù)處理為0,處理為I等情況。
其中,當(dāng)前述步驟S212執(zhí)行時(shí),在本步驟中,則在將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息和視頻流參數(shù)信息發(fā)送給監(jiān)控模塊。即在應(yīng)用進(jìn)程通過IPR_MJ_CREATE函數(shù)獲取視頻流時(shí)可設(shè)置ー個(gè)開關(guān),當(dāng)獲取到視頻流參數(shù)信息時(shí),打開該開關(guān)保存接收到的信息,比如視頻流參數(shù)信息。當(dāng)獲取到進(jìn)程獲取第一幀視頻流數(shù)據(jù)或者第N幀視頻流數(shù)據(jù)時(shí),開關(guān)將關(guān)閉,不再保存其接受到的信息。當(dāng)該應(yīng)用進(jìn)程打開的監(jiān)控模塊的FileOjbect關(guān)閉時(shí),再次開啟該開關(guān)。實(shí)際中,物理驅(qū)動(dòng)對象模塊接收到監(jiān)控模塊發(fā)送的替換數(shù)據(jù)之前,可能無法及時(shí)將應(yīng)用進(jìn)程當(dāng)前讀取的視頻流數(shù)據(jù)替換為替換數(shù)據(jù),即在監(jiān)控模塊接收到視頻流參數(shù)信息,再將預(yù)置的第一源替換數(shù)據(jù)處理為替換數(shù)據(jù)發(fā)送到物理驅(qū)動(dòng)對象模塊的第二時(shí)間點(diǎn),與物理驅(qū)動(dòng)對象模塊需要進(jìn)行替換的第一時(shí)間點(diǎn)之間存在延時(shí),因?yàn)榈谝粫r(shí)間點(diǎn)一般比第ニ時(shí)間點(diǎn)要早。那么此時(shí),物理驅(qū)動(dòng)對象模塊可將替換數(shù)據(jù)位到達(dá)物理驅(qū)動(dòng)對象模塊時(shí),應(yīng)用進(jìn)程讀取的視頻流數(shù)據(jù)處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù),再返回給應(yīng)用進(jìn)程。比如,將應(yīng)用進(jìn)程讀取的視頻流數(shù)據(jù)處理為0,處理為I等情況。步驟230,所述監(jiān)控模塊依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊。其中,本步驟首先會(huì)將預(yù)置的第一源替換數(shù)據(jù)轉(zhuǎn)換為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù),并將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊。所述與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù)為與視頻設(shè)備輸出的數(shù)據(jù)類型相同的替換數(shù)據(jù),所述第一源替換數(shù)據(jù)包括待轉(zhuǎn)換的圖片數(shù)據(jù)。因?yàn)椴煌膽?yīng)用程序讀取的視頻流參數(shù)信息可能不同,那么即需要監(jiān)控模塊依據(jù)視頻流參數(shù)信息,將預(yù)置的第一源替換數(shù)據(jù)轉(zhuǎn)換為與視頻設(shè)備輸出的數(shù)據(jù)類型相同的替換數(shù)據(jù),然后再將替換數(shù)據(jù)通過監(jiān)控模塊(一般是通過監(jiān)控模塊中的監(jiān)控過濾器)發(fā)送至所述物理驅(qū)動(dòng)對象模塊。 優(yōu)選的,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括將用戶端選擇的數(shù)據(jù)作為監(jiān)控模塊進(jìn)行處理的第一源替換數(shù)據(jù)。即用戶可自定義選擇圖片等格式數(shù)據(jù)作為第一源替換數(shù)據(jù)。優(yōu)選的,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括步驟S231,在接收到視頻流參數(shù)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊。本步驟中,即當(dāng)監(jiān)控模塊接收到視頻流參數(shù)信息吋,即將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊,存儲(chǔ)在物理驅(qū)動(dòng)對象模塊中的配置文件中。和/或,步驟S232,在接收到應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊。因?yàn)樗鋈缜八?,視頻流參數(shù)信息發(fā)送給監(jiān)控模塊的時(shí)機(jī),要么比應(yīng)用進(jìn)程發(fā)送給監(jiān)控模塊的時(shí)機(jī)早,要么同時(shí)發(fā)送。那么如果監(jiān)控模塊接收視頻流參數(shù)信息的時(shí)機(jī)早于應(yīng)用進(jìn)程的時(shí)機(jī)時(shí),可先存放于監(jiān)控模塊,等待接收到應(yīng)用進(jìn)程的標(biāo)識(shí)信息時(shí),再將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊。另外,如果當(dāng)前應(yīng)用進(jìn)程只是打開了視頻設(shè)備,而未讀取視頻流數(shù)據(jù)就退出時(shí),可通知監(jiān)控模塊把當(dāng)前存儲(chǔ)的視頻流參數(shù)信息刪除,避免影響后續(xù)進(jìn)程的使用。在上述步驟中,所述應(yīng)用進(jìn)程標(biāo)識(shí)信息和視頻流參數(shù)信息通過監(jiān)控過濾器發(fā)送給監(jiān)控模塊;所述監(jiān)控過濾器由所述監(jiān)控模塊在控制模塊中創(chuàng)建。步驟240,所述物理驅(qū)動(dòng)對象模塊依據(jù)所述替換數(shù)據(jù)將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)。當(dāng)應(yīng)用進(jìn)程讀取視頻流后,比如讀取第一幀視頻流,或者第N幀視頻流吋,可通過IOCTL_KS_READ_STREAM中設(shè)置的回調(diào)函數(shù)ReadStream_Rountine,將應(yīng)用進(jìn)程讀取的視頻流數(shù)據(jù)替換為替換數(shù)據(jù)。依據(jù)所述替換數(shù)據(jù),將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)時(shí)包括步驟S241,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,判斷所述監(jiān)控模塊是否已經(jīng)在控制模塊中創(chuàng)建監(jiān)控過濾器;若是,則調(diào)整所述物理驅(qū)動(dòng)對象模塊為第一替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)。當(dāng)監(jiān)控模塊運(yùn)行后,會(huì)設(shè)置物理驅(qū)動(dòng)模塊為主動(dòng)監(jiān)控模式,當(dāng)有進(jìn)程打開攝像頭設(shè)備吋,驅(qū)動(dòng)在沒有收到監(jiān)控模塊的攔截指令前將主動(dòng)攔截,則將原視頻流數(shù)據(jù)修改,如將視頻流數(shù)據(jù)替換為替換數(shù)據(jù),或者如將視頻流清零,其代碼示例如下
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的回調(diào)函數(shù)中,由于主動(dòng)監(jiān)控模式的存在,該進(jìn)程在未 獲取用戶的選擇放行前,將無法讀取到每ー幀的數(shù)據(jù),其代碼示例如下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,當(dāng)監(jiān)控模塊接收到所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息吋,通過所述監(jiān)控過濾器發(fā)送替換指令至所述物理驅(qū)動(dòng)對象模塊,調(diào)整所述物理驅(qū)動(dòng)對象模塊為第二替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)。所述物理驅(qū)動(dòng)模塊也可根據(jù)監(jiān)控模塊實(shí)時(shí)發(fā)送的替換指令調(diào)整為替換模式。 步驟250,所述監(jiān)控模塊依據(jù)所述應(yīng)用進(jìn)程標(biāo)識(shí)信息提示用戶端是否允許所述應(yīng)用進(jìn)程讀取視頻流數(shù)據(jù);當(dāng)允許所述應(yīng)用進(jìn)程讀取視頻流數(shù)據(jù)時(shí),監(jiān)控模塊通知所述物理驅(qū)動(dòng)對象模塊停止替換。當(dāng)不允許所述應(yīng)用進(jìn)程使用視頻設(shè)備時(shí),所述物理驅(qū)動(dòng)對象模塊維持當(dāng)前替換模式。另外,本申請還包括通過所述監(jiān)控模塊發(fā)送暫停指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù);和/或,通過所述監(jiān)控模塊發(fā)送阻斷指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為替換數(shù)據(jù);和/或,通過所述監(jiān)控模塊發(fā)送恢復(fù)指令至所述的物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊停止將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)、和/或停止將所述后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù)。即監(jiān)控模塊通過特效模塊可以實(shí)現(xiàn)對當(dāng)前視頻流的隨時(shí)阻斷和暫停等操作。特效模塊為監(jiān)控模塊的一部分,其可以向驅(qū)動(dòng)注冊過濾器來實(shí)現(xiàn)對驅(qū)動(dòng)發(fā)送相關(guān)的指令。比如實(shí)現(xiàn)對視頻流的暫停功能,即當(dāng)物理驅(qū)動(dòng)對象模塊接受到暫停指令時(shí),將當(dāng)前幀進(jìn)行保存,并將該數(shù)據(jù)替換掉之后的所有視頻流幀數(shù)據(jù),以視頻暫停的功能。比如實(shí)現(xiàn)對視頻流的阻斷功能,即將每一幀的視頻流數(shù)據(jù)替換為監(jiān)控模塊發(fā)給驅(qū)動(dòng)的替換數(shù)據(jù)。比如實(shí)現(xiàn)隨時(shí)恢復(fù)功能,即當(dāng)發(fā)送恢復(fù)指令時(shí),停止所述數(shù)據(jù)替換或者停止暫停動(dòng)作。另外,在監(jiān)控模塊獲取到視頻參數(shù)信息和應(yīng)用進(jìn)程標(biāo)識(shí)信息后,還可根據(jù)允許應(yīng)用進(jìn)程讀取視頻流數(shù)據(jù)的白名單,將應(yīng)用進(jìn)程標(biāo)識(shí)信息與所述白名單中的應(yīng)用進(jìn)程標(biāo)識(shí)信息進(jìn)行匹配,如果匹配上,則允許所述應(yīng)用進(jìn)程使用所述視頻設(shè)備,如果未匹配上,則可將預(yù)置的源替換數(shù)據(jù)轉(zhuǎn)換為與視頻設(shè)備輸出的數(shù)據(jù)類型相同的替換數(shù)據(jù)并將所述轉(zhuǎn)換后的替換數(shù)據(jù)和替換指令通過控制模塊發(fā)送至物理驅(qū)動(dòng)對象模塊,當(dāng)有應(yīng)用進(jìn)程通過物理驅(qū)動(dòng)對象模塊讀取視頻流,所述物理驅(qū)動(dòng)對象模塊將視頻設(shè)備發(fā)送的視頻流的每幀視頻數(shù)據(jù)替換為所述替換數(shù)據(jù),并將所述替換數(shù)據(jù)發(fā)送給應(yīng)用進(jìn)程。另外,也可結(jié)合不允許使用視頻設(shè)備的黑名單,將應(yīng)用進(jìn)程標(biāo)識(shí)信息與黑名單進(jìn)行匹配,如果匹配上,則直接選擇不允許相應(yīng)應(yīng)用進(jìn)程使用視頻設(shè)備,將視頻流替換為相應(yīng)替換數(shù)據(jù)?;蛘?,將應(yīng)用進(jìn)程標(biāo)識(shí)信息同時(shí)與白名單、黑名單進(jìn)行匹配,如果都沒匹配上,則提示用戶選擇是否允許當(dāng)前應(yīng)用進(jìn)程使用視頻設(shè)備。對于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。本申請可用于眾多通用或?qū)S玫挠?jì)算系統(tǒng)環(huán)境或配置中。例如個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。本申請可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請,在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。以上對本申請所提供的一種計(jì)算機(jī)視頻設(shè)備保護(hù)方法和裝置,進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對本申請的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請的方法及其核心思想;同時(shí),對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上 所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。
權(quán)利要求
1.一種計(jì)算機(jī)視頻設(shè)備保護(hù)裝置,包括視頻流過濾驅(qū)動(dòng)和監(jiān)控模塊;其特征在于,包括 所述視頻流過濾驅(qū)動(dòng)包括控制模塊和物理驅(qū)動(dòng)對象模塊; 所述物理驅(qū)動(dòng)對象模塊用于 當(dāng)獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊; 當(dāng)讀取到視頻流數(shù)據(jù)后,將視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊; 將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù); 所述控制模塊用于 將所述視頻流參數(shù)信息和應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊; 所述監(jiān)控模塊用于 接收所述控制模塊發(fā)送的應(yīng)用進(jìn)程標(biāo)識(shí)信息和視頻流參數(shù)信息; 依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊; 依據(jù)所述應(yīng)用進(jìn)程標(biāo)識(shí)信息提示用戶端是否允許所述應(yīng)用進(jìn)程使用視頻設(shè)備; 當(dāng)允許所述應(yīng)用進(jìn)程讀取視頻流數(shù)據(jù)時(shí),監(jiān)控模塊通知所述物理驅(qū)動(dòng)對象模塊停止替換。
2.根據(jù)權(quán)利要求I所述的裝置,其特征在于,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊;當(dāng)讀取到視頻流數(shù)據(jù)后,將應(yīng)用進(jìn)程對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊時(shí)包括 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊; 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊。
3.根據(jù)權(quán)利要求I所述的裝置,其特征在于,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)包括 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第一幀視頻流數(shù)據(jù)時(shí),將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊; 或,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第N幀視頻流數(shù)據(jù)時(shí),其中N > 1,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊,并將第N幀之前的每幀視頻流數(shù)據(jù)中的每一字節(jié)處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù); 或,當(dāng)所述物理驅(qū)動(dòng)對象模塊不能解析所述視頻流時(shí),將所述視頻流的數(shù)據(jù)置換為零發(fā)送給應(yīng)用進(jìn)程。
4.根據(jù)權(quán)利要求I或3所述的裝置,其特征在于,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)包括 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息時(shí),將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊; 或,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊。
5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括 在接收到視頻流參數(shù)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述替換數(shù)據(jù)為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù); 和/或,在接收到應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述替換數(shù)據(jù)為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù)。
6.根據(jù)權(quán)利要求I所述的裝置,其特征在于,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括 將預(yù)置的第一源替換數(shù)據(jù)轉(zhuǎn)換為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù),并將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù)為與視頻設(shè)備輸出的數(shù)據(jù)類型相同的替換數(shù)據(jù),所述第一源替換數(shù)據(jù)包括待轉(zhuǎn)換的圖片數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括 將用戶端選擇的數(shù)據(jù)作為監(jiān)控模塊進(jìn)行處理的第一源替換數(shù)據(jù)。
8.根據(jù)權(quán)利要求I所述的裝置,其特征在于,所述監(jiān)控模塊還用于 發(fā)送暫停指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù); 和/或,發(fā)送阻斷指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為替換數(shù)據(jù); 和/或,發(fā)送恢復(fù)指令至所述的物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊停止將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)、和/或停止將所述后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù)。
9.根據(jù)權(quán)利要求I所述的裝置,其特征在于 所述的控制模塊包括監(jiān)控過濾器;所述監(jiān)控過濾器由所述監(jiān)控模塊在控制模塊中創(chuàng)建,所述應(yīng)用進(jìn)程標(biāo)識(shí)信息和視頻流參數(shù)信息通過所述監(jiān)控過濾器將發(fā)送給監(jiān)控模塊。
10.根據(jù)權(quán)利要求I所述的裝置,其特征在于,在所述物理驅(qū)動(dòng)對象模塊中,依據(jù)所述替換數(shù)據(jù),將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)時(shí)包括 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,判斷所述監(jiān)控模塊是否已經(jīng)在控制模塊中創(chuàng)建監(jiān)控過濾器;若是,則調(diào)整所述物理驅(qū)動(dòng)對象模塊為第一替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù); 和/或,當(dāng)監(jiān)控模塊接收到所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),通過所述監(jiān)控過濾器發(fā)送替換指令至所述物理驅(qū)動(dòng)對象模塊,調(diào)整所述物理驅(qū)動(dòng)對象模塊為第二替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)。
11.根據(jù)權(quán)利要求I所述的裝置,其特征在于,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息時(shí)包括 所述物理驅(qū)動(dòng)對象模塊通過分析IPR_MJ_CREATE函數(shù)中的消息獲取所述視頻流參數(shù)信息。
12.根據(jù)權(quán)利要求I所述的裝置,其特征在于,在所述物理驅(qū)動(dòng)對象模塊中,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)時(shí)包括 所述物理驅(qū)動(dòng)對象模塊通過對IPR_MJ_DEVICE_CONTROL函數(shù)中的IOCTL_KS_READ_STREAM消息分析判斷是否有應(yīng)用進(jìn)程通過物理驅(qū)動(dòng)對象模塊讀取視頻流; 若是,則獲取當(dāng)前應(yīng)用進(jìn)程標(biāo)識(shí)信息,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊。
13.根據(jù)權(quán)利要求I所述的裝置,其特征在于 根據(jù)系統(tǒng)注冊表加載所述視頻流過濾驅(qū)動(dòng),并在所述視頻流過濾驅(qū)動(dòng)中創(chuàng)建控制模塊和針對視頻設(shè)備的物理驅(qū)動(dòng)對象模塊。
14.一種計(jì)算機(jī)視頻設(shè)備保護(hù)方法,其特征在于,包括 獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息; 當(dāng)讀取到視頻流數(shù)據(jù)后,將視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊; 所述監(jiān)控模塊依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊; 所述物理驅(qū)動(dòng)對象模塊依據(jù)所述替換數(shù)據(jù)將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù);所述監(jiān)控模塊依據(jù)所述應(yīng)用進(jìn)程標(biāo)識(shí)信息提示用戶端是否允許所述應(yīng)用進(jìn)程讀取視頻流數(shù)據(jù);當(dāng)允許所述應(yīng)用進(jìn)程讀取視頻流數(shù)據(jù)時(shí),監(jiān)控模塊通知所述物理驅(qū)動(dòng)對象模塊停止替換。
15.根據(jù)權(quán)利要求14所述的方法,其特征在于,獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息,和當(dāng)讀取到視頻流數(shù)據(jù)后,將視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊包括 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊; 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送至監(jiān)控模塊。
16.根據(jù)權(quán)利要求14所述的方法,其特征在于,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)包括 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第一幀視頻流數(shù)據(jù)時(shí),將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊; 或,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到第N幀視頻流數(shù)據(jù)時(shí),其中N > I,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊,并將第N幀之前的每幀視頻流數(shù)據(jù)中的每一字節(jié)處理為與所述視頻流數(shù)據(jù)不同的數(shù)據(jù)。
17.根據(jù)權(quán)利要求14或16所述的方法,其特征在于,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊時(shí)包括 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息時(shí),將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊; 或,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,將所述視頻流參數(shù)信息發(fā)送至監(jiān)控模塊; 或,當(dāng)所述物理驅(qū)動(dòng)對象模塊不能解析所述視頻流時(shí),將所述視頻流的數(shù)據(jù)置換為零發(fā)送給應(yīng)用進(jìn)程。
18.根據(jù)權(quán)利要求17所述的方法,其特征在于,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括 在接收到視頻流參數(shù)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊; 和/或,在接收到應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),將替換數(shù)據(jù)通過控制模塊發(fā)送至所述物理驅(qū)動(dòng)對象模塊。
19.根據(jù)權(quán)利要求14所述的方法,其特征在于,在所述監(jiān)控模塊中,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括 將預(yù)置的第一源替換數(shù)據(jù)轉(zhuǎn)換為與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù),并將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊;所述與視頻流參數(shù)信息對應(yīng)的替換數(shù)據(jù)為與視頻設(shè)備輸出的數(shù)據(jù)類型相同的替換數(shù)據(jù),所述第一源替換數(shù)據(jù)包括待轉(zhuǎn)換的圖片數(shù)據(jù)。
20.根據(jù)權(quán)利要求14所述的方法,其特征在于,依據(jù)視頻流參數(shù)信息將替換數(shù)據(jù)發(fā)送至所述物理驅(qū)動(dòng)對象模塊時(shí)包括 將用戶端選擇的數(shù)據(jù)作為監(jiān)控模塊進(jìn)行處理的第一源替換數(shù)據(jù)。
21.根據(jù)權(quán)利要求14所述的方法,其特征在于,還包括 通過所述監(jiān)控模塊發(fā)送暫停指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù); 和/或,通過所述監(jiān)控模塊發(fā)送阻斷指令至所述物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊從當(dāng)前幀開始,將后續(xù)的每幀視頻流數(shù)據(jù)替換為替換數(shù)據(jù); 和/或,通過所述監(jiān)控模塊發(fā)送恢復(fù)指令至所述的物理驅(qū)動(dòng)對象模塊,控制所述物理驅(qū)動(dòng)對象模塊停止將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)、和/或停止將所述后續(xù)的每幀視頻流數(shù)據(jù)替換為當(dāng)前發(fā)送給應(yīng)用進(jìn)程的數(shù)據(jù)。
22.根據(jù)權(quán)利要求14所述的方法,其特征在于 所述應(yīng)用進(jìn)程標(biāo)識(shí)信息和視頻流參數(shù)信息通過監(jiān)控過濾器發(fā)送給監(jiān)控模塊;所述監(jiān)控過濾器由所述監(jiān)控模塊在控制模塊中創(chuàng)建。
23.根據(jù)權(quán)利要求14所述的方法,其特征在于,依據(jù)所述替換數(shù)據(jù),將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)時(shí)包括 當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)后,判斷所述監(jiān)控模塊是否已經(jīng)在控制模塊中創(chuàng)建監(jiān)控過濾器;若是,則調(diào)整所述物理驅(qū)動(dòng)對象模塊為第一替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù); 和/或,當(dāng)監(jiān)控模塊接收到所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息時(shí),通過所述監(jiān)控過濾器發(fā)送替換指令至所述物理驅(qū)動(dòng)對象模塊,調(diào)整所述物理驅(qū)動(dòng)對象模塊為第二替換模式,用于將所述視頻流數(shù)據(jù)替換為所述替換數(shù)據(jù)。
24.根據(jù)權(quán)利要求14所述的方法,其特征在于,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊獲取視頻設(shè)備對應(yīng)的視頻流參數(shù)信息時(shí)包括 所述物理驅(qū)動(dòng)對象模塊通過分析IPR_MJ_CREATE函數(shù)中的消息獲取所述視頻流參數(shù)信息。
25.根據(jù)權(quán)利要求14所述的方法,其特征在于,當(dāng)應(yīng)用進(jìn)程通過視頻流過濾驅(qū)動(dòng)中的物理驅(qū)動(dòng)對象模塊讀取到視頻流數(shù)據(jù)時(shí)包括 所述物理驅(qū)動(dòng)對象模塊通過對IPR_MJ_DEVICE_CONTROL函數(shù)中的IOCTL_KS_READ_STREAM消息分析判斷是否有應(yīng)用進(jìn)程通過物理驅(qū)動(dòng)對象模塊讀取視頻流; 若是,則獲取當(dāng)前應(yīng)用進(jìn)程標(biāo)識(shí)信息,將所述視頻流數(shù)據(jù)對應(yīng)的應(yīng)用進(jìn)程標(biāo)識(shí)信息發(fā)送給監(jiān)控模塊。
26.根據(jù)權(quán)利要求14所述的方法,其特征在于,還包括 根據(jù)系統(tǒng)注冊表加載過濾驅(qū)動(dòng),并在所述過濾驅(qū)動(dòng)中創(chuàng)建控制模塊和針對視頻設(shè)備的物理驅(qū)動(dòng)對象模塊。
全文摘要
本申請?zhí)峁┝艘环N計(jì)算機(jī)視頻設(shè)備保護(hù)方法和裝置,涉及計(jì)算機(jī)技術(shù)領(lǐng)域。在本申請的處理過程中,對于應(yīng)用進(jìn)程的任何一個(gè)請求消息包,均沒有強(qiáng)行的進(jìn)行阻斷,對于帶有視頻流數(shù)據(jù)的請求包,只是將請求包中的視頻數(shù)據(jù)替換為與視頻相同格式的替換數(shù)據(jù),既沒強(qiáng)行的暴力的阻斷應(yīng)用進(jìn)程和視頻設(shè)備之間的通訊,也不會(huì)破壞應(yīng)用進(jìn)程與視頻設(shè)備之間正常交互的協(xié)議,不會(huì)導(dǎo)致該應(yīng)用進(jìn)程認(rèn)為視頻設(shè)備損壞而無法再次訪問視頻設(shè)備,該應(yīng)用進(jìn)程不用重啟即可重新訪問所述視頻設(shè)備;另外,在本申請中,是在獲取到視頻設(shè)備的視頻流數(shù)據(jù)后再提示用戶端選擇是否允許進(jìn)行阻斷,不會(huì)造成誤報(bào)的情況。
文檔編號G06F21/00GK102663293SQ201210086720
公開日2012年9月12日 申請日期2012年3月28日 優(yōu)先權(quán)日2012年3月28日
發(fā)明者秦光遠(yuǎn), 范紀(jì)鍠 申請人:奇智軟件(北京)有限公司