欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)方法及其系統(tǒng)的制作方法

文檔序號:6427590閱讀:177來源:國知局
專利名稱:虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)方法及其系統(tǒng)。
背景技術(shù)
在Windows 2000系統(tǒng)下,幾乎所有的I/O都是包驅(qū)動的,每個(gè)工作命令描述一個(gè)
單獨(dú)的I/o操作,這個(gè)命令告訴驅(qū)動程序需要做什么,并且通過I/O子系統(tǒng)跟蹤請求的進(jìn)展,這些命令被封裝成為輸入請求包(Iuput Request Package,簡稱IRP)的形式,當(dāng)發(fā)出一個(gè)I/O系統(tǒng)服務(wù)時(shí)(比如創(chuàng)建文件或讀文件的請求),I/O管理器就會通過構(gòu)造一個(gè)描述此請求的IRP,并將該IRP的一個(gè)指針傳給設(shè)備驅(qū)動開始對該請求進(jìn)行處理。如果OS向I/O管理器和設(shè)備驅(qū)動完整地描述一個(gè)I/O請求,那么IRP中保存的信息就可以達(dá)到這個(gè)目的。過濾層驅(qū)動就是一個(gè)攔截到一些已有軟件模塊的請求的中間層驅(qū)動,依靠在請求到達(dá)目標(biāo)前截獲請求,過濾驅(qū)動就有機(jī)會擴(kuò)展或修改請求的原始接收者所提供的功能或服務(wù)。Windows 公開了一些應(yīng)用程序編程接口(Application Programming Interface,簡稱API)函數(shù),通過調(diào)用這些API或者發(fā)送消息的機(jī)制來達(dá)到對鼠標(biāo)和鍵盤的控制。在一些應(yīng)用場景中,比如在系統(tǒng)修復(fù)自動化項(xiàng)目、軟件安裝卸載自動化項(xiàng)目、痕跡清理自動化項(xiàng)目等場景下,某些軟件為了防止被利用或者非法破解、或者網(wǎng)絡(luò)游戲出于對控制輸入速度的和反外掛的目的,它們會對普通的鼠標(biāo)和鍵盤API進(jìn)行過濾,從而導(dǎo)致從應(yīng)用層無法操作它們的界面,普通的控制鼠標(biāo)和鍵盤的API函數(shù)都是無效的。對于上述問題,現(xiàn)有技術(shù)中的一種解決方案是通過WinIo軟件包直接控制鼠標(biāo)和鍵盤硬件端口。WinIo是一個(gè)現(xiàn)在比較流行的第三方庫,通過加載一個(gè)內(nèi)核模式的設(shè)備驅(qū)動程序,利用幾種底層編程技巧,使得Windows應(yīng)用程序可以直接對I/O端口和物理內(nèi)存進(jìn)行存取,從而繞過了 Windows系統(tǒng)的保護(hù)機(jī)制。WinIo包含了 3個(gè)文件WinIo. dll、WinIo.sys和WINI0. VXD,其中WINI0. VXD驅(qū)動程序用在Win95/98系統(tǒng)上,Winlo. sys驅(qū)動程序用在WinNT/2000/XP系統(tǒng)上,Winlo. dll提供了功能函數(shù)的調(diào)用。在Winlo. dll中有兩個(gè)函數(shù)最重要=InitializeWinIo用來初始化WinIo的驅(qū)動程序,必須在調(diào)用所有其它功能函數(shù)之前調(diào)用該函數(shù);ShutdownWinIo用來卸載WinIo的驅(qū)動程序,在中止應(yīng)用函數(shù)之前或者不再需要使用WinIo時(shí)調(diào)用。但是,在使用WinIO向鼠標(biāo)或者鍵盤發(fā)送數(shù)據(jù)的時(shí)候,必須有硬件的支持(電腦上必須插入PS2鼠標(biāo));向串口直接讀寫數(shù)據(jù)存在效率的問題,而且存在串口數(shù)據(jù)同步問題。假如I秒內(nèi)連續(xù)發(fā)送了 100個(gè)數(shù)據(jù),可能串口實(shí)際響應(yīng)的只有10個(gè)數(shù)據(jù),這樣就存在同步的問題。WINIO是對物理鼠標(biāo)直接發(fā)送數(shù)據(jù),然而在程序發(fā)送數(shù)據(jù)的時(shí)候,人為的也可以對物理鼠標(biāo)或鍵盤進(jìn)行操作,這樣就有可能導(dǎo)致數(shù)據(jù)混亂,出現(xiàn)鼠標(biāo)滿屏幕飛的效果或者鍵入字符錯(cuò)誤的效果。綜上所述,對于屏蔽控制鼠標(biāo)或鍵盤的API函數(shù)的情況下導(dǎo)致無法控制或鍵盤的問題,現(xiàn)有技術(shù)中尚未提出有效地解決方案。

發(fā)明內(nèi)容
有鑒于屏蔽控制鼠標(biāo)或鍵盤的API函數(shù)的情況下導(dǎo)致無法控制或鍵盤的問題而做出本發(fā)明,為此本發(fā)明的主要目的在于提供一種虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)方法及其系統(tǒng),其中為解決上述問題,本發(fā)明提供一種虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)方法,包括調(diào)用系統(tǒng)應(yīng)用程序編程接口 API創(chuàng)建虛擬輸入設(shè)備,在驅(qū)動層上掛載所述虛擬輸入設(shè)備;將系統(tǒng)輸入設(shè)備的函數(shù)地址記錄到所述虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體中,以使驅(qū)動層自動獲得系統(tǒng)輸入設(shè)備的函數(shù)地址;獲取應(yīng)用層發(fā)送給所述虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體; 所述驅(qū)動層根據(jù)虛擬輸入設(shè)備中記錄的設(shè)備擴(kuò)展結(jié)構(gòu)體,使用所獲取的輸入數(shù)據(jù)結(jié)構(gòu)體控制虛擬輸入設(shè)備的行為。其中,所述設(shè)備擴(kuò)展結(jié)構(gòu)體,可以包括系統(tǒng)輸入設(shè)備的屬性、連接系統(tǒng)輸入設(shè)備的驅(qū)動地址、系統(tǒng)輸入設(shè)備的端口地址、本驅(qū)動所處設(shè)備棧的位置信息,和/或所掛載設(shè)備的地址。其中,所述輸入數(shù)據(jù)結(jié)構(gòu)體,可以包括鍵盤的鍵碼、鍵盤按鍵行為、鼠標(biāo)的坐標(biāo)、鼠標(biāo)的按鍵類型、鼠標(biāo)的點(diǎn)擊行為、鼠標(biāo)滾輪的滾動單位數(shù)值、和/或鼠標(biāo)移動軌跡。其中,所述虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體可以在創(chuàng)建所述虛擬輸入設(shè)備的過程中生成。其中,所述獲取應(yīng)用層發(fā)送給所述虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體的步驟,可以包括獲取應(yīng)用層發(fā)送至驅(qū)動層的控制所述虛擬輸入設(shè)備的輸入請求包IRP ;解析所述IRP得到所述虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體。其中,所述獲取應(yīng)用層發(fā)送至驅(qū)動層的控制所述虛擬輸入設(shè)備的IRP的步驟,可以包括創(chuàng)建控制設(shè)備對象⑶0 ;利用所述OTO獲取應(yīng)用層發(fā)送至驅(qū)動層的控制所述虛擬輸入設(shè)備的IRP。所述控制虛擬輸入設(shè)備的行為的步驟,可以包括通過設(shè)備擴(kuò)展結(jié)構(gòu)體對輸入數(shù)據(jù)結(jié)構(gòu)體進(jìn)行回調(diào)實(shí)現(xiàn)控制。本發(fā)明進(jìn)而還一種虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)系統(tǒng),包括虛擬輸入設(shè)備創(chuàng)建模塊,用于調(diào)用系統(tǒng)應(yīng)用程序編程接口 API創(chuàng)建虛擬輸入設(shè)備,在驅(qū)動層上掛載所述虛擬輸入設(shè)備;記錄模塊,用于將系統(tǒng)輸入設(shè)備的函數(shù)地址記錄到所述虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體中,以使驅(qū)動層自動獲得系統(tǒng)輸入設(shè)備的函數(shù)地址;獲取模塊,用于獲取應(yīng)用層發(fā)送給所述虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體;控制模塊,用于所述驅(qū)動層根據(jù)虛擬輸入設(shè)備中記錄的設(shè)備擴(kuò)展結(jié)構(gòu)體,使用所獲取的輸入數(shù)據(jù)結(jié)構(gòu)體控制虛擬輸入設(shè)備的行為。
其中,所述設(shè)備擴(kuò)展結(jié)構(gòu)體,可以包括系統(tǒng)輸入設(shè)備的屬性、連接系統(tǒng)輸入設(shè)備的驅(qū)動地址、系統(tǒng)輸入設(shè)備的端口地址、本驅(qū)動所處設(shè)備棧的位置信息,和/或所掛載設(shè)備的地址。其中,所述輸入數(shù)據(jù)結(jié)構(gòu)體,可以包括鍵盤的鍵碼、鍵盤按鍵行為、鼠標(biāo)的坐標(biāo)、鼠標(biāo)的按鍵類型、鼠標(biāo)的點(diǎn)擊行為、鼠標(biāo)滾輪的滾動單位數(shù)值、和/或鼠標(biāo)移動軌跡。其中,所述虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體可以在創(chuàng)建所述虛擬輸入設(shè)備的過程中生成。其中,所述獲取模塊,可以包括IRP獲取單元,用于獲取應(yīng)用層發(fā)送至驅(qū)動層的控制所述虛擬輸入設(shè)備的輸入請求包IRP ; 解析單元,用于解析所述IRP得到所述虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體。其中,所述IRP獲取單元,創(chuàng)建控制設(shè)備對象⑶0,利用所述⑶0獲取應(yīng)用層發(fā)送至驅(qū)動層的控制所述虛擬輸入設(shè)備的IRP。其中,所述控制模塊,通過設(shè)備擴(kuò)展結(jié)構(gòu)體對輸入數(shù)據(jù)結(jié)構(gòu)體進(jìn)行回調(diào)實(shí)現(xiàn)控制。綜上所示,根據(jù)本發(fā)明上述技術(shù)方案,在軟件屏蔽虛擬輸入設(shè)備消息的情況下也能夠控制虛擬輸入設(shè)備,有效地防止軟件的限制,并且具有操作精度高,速度快的特點(diǎn)。


此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實(shí)施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖I是根據(jù)本發(fā)明實(shí)施例的虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)系統(tǒng)的結(jié)構(gòu)框圖;圖3是根據(jù)本發(fā)明實(shí)施例的虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)系統(tǒng)的優(yōu)選結(jié)構(gòu)的框圖。
具體實(shí)施例方式本發(fā)明利用應(yīng)用層發(fā)送的程序中自定義IRP,然后驅(qū)動該截獲此IRP,經(jīng)過分析該IRP,并利用分析后的結(jié)果控制虛擬輸入設(shè)備,使得對虛擬輸入設(shè)備的控制可以不受windows API的限制。需要說明,本發(fā)明中提到的虛擬輸入設(shè)備包括但不限于以下設(shè)備虛擬鼠標(biāo)、虛擬鍵盤、虛擬光驅(qū)、虛擬硬盤。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,以下結(jié)合附圖及具體實(shí)施例,對本發(fā)明作進(jìn)一步地詳細(xì)說明。根據(jù)本發(fā)明的實(shí)施例,提供了一種虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)方法。圖I是根據(jù)本發(fā)明實(shí)施例的虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)方法的流程圖,如圖I所示,該方法包括(步驟S12-S18)步驟S12,調(diào)用系統(tǒng)應(yīng)用程序編程接口(API)創(chuàng)建虛擬輸入設(shè)備,在驅(qū)動層上掛載虛擬輸入設(shè)備。步驟S14,將系統(tǒng)輸入設(shè)備的函數(shù)地址記錄到虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體中,以使驅(qū)動層自動獲得系統(tǒng)輸入設(shè)備的函數(shù)地址。其中,該虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體包括但不限于系統(tǒng)輸入設(shè)備的屬性、連接系統(tǒng)輸入設(shè)備的驅(qū)動地址、系統(tǒng)輸入設(shè)備的端口地址、本驅(qū)動所處設(shè)備棧的位置信息,和/或所掛載設(shè)備的地址。首先,在AddDevice例程中調(diào)用系統(tǒng)API創(chuàng)建虛擬輸入設(shè)備,將創(chuàng)建的虛擬輸入設(shè)備掛載到系統(tǒng)輸入設(shè)備上,并且記錄系統(tǒng)輸入設(shè)備的信息到創(chuàng)建的虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體中,根據(jù)這些信息獲取底層系統(tǒng)輸入設(shè)備驅(qū)動的一些特性供驅(qū)動層所使用。然后,響應(yīng)虛擬輸入設(shè)備的IRP_MJ_INTERNAL_DEVICE_CONTROL,并且把系統(tǒng)輸入設(shè)備中的一些數(shù)據(jù)結(jié)構(gòu)的指針(即底層系統(tǒng)輸入設(shè)備的函數(shù)指針)記錄到創(chuàng)建的虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體中,其中,數(shù)據(jù)結(jié)構(gòu)的指針是供驅(qū)動層所調(diào)用的在系統(tǒng)設(shè)備已經(jīng)實(shí)現(xiàn)的函數(shù)接口地址。在驅(qū)動中,設(shè)備是分層的結(jié)構(gòu)。實(shí)際的輸入設(shè)備(例如鼠標(biāo))屬于最下層(即底層設(shè)備),它是由操作系統(tǒng)所創(chuàng)建的;而驅(qū)動層創(chuàng)建的虛擬輸入設(shè)備是在底層設(shè)備的上層,所以創(chuàng)建虛擬輸入設(shè)備時(shí)就可以把創(chuàng)建出的虛擬輸入設(shè)備掛載到系統(tǒng)創(chuàng)建的輸入設(shè)備之上,這樣就形成一個(gè)設(shè)備棧。 需要說明,在創(chuàng)建虛擬輸入設(shè)備時(shí),不依賴于實(shí)際的硬件輸入設(shè)備是否存在以及硬件輸入設(shè)備的類型。例如在創(chuàng)建虛擬鼠標(biāo)和虛擬鍵盤時(shí),無論電腦是否安裝有鼠標(biāo)和鍵盤,也無論鼠標(biāo)和鍵盤的類型是USB還是PS2,都不影響虛擬鼠標(biāo)和虛擬鍵盤的創(chuàng)建。步驟S16,獲取應(yīng)用層發(fā)送給虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體。具體地,步驟S16包括調(diào)用Windows驅(qū)動開發(fā)包中的API創(chuàng)建一個(gè)控制設(shè)備對象(Control Device Ob ject,簡稱CD0)。在實(shí)際應(yīng)用中,應(yīng)用層會通過系統(tǒng)API向驅(qū)動層發(fā)送很多IRP,利用創(chuàng)建的CDO獲取應(yīng)用層發(fā)送至驅(qū)動層的控制虛擬輸入設(shè)備的IRP,解析該IRP得到虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體。步驟S18,驅(qū)動層根據(jù)虛擬輸入設(shè)備中記錄的設(shè)備擴(kuò)展結(jié)構(gòu)體,使用所獲取的輸入數(shù)據(jù)結(jié)構(gòu)體控制虛擬輸入設(shè)備的行為。根據(jù)解析得到的虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體,構(gòu)造出驅(qū)動層能夠識別的輸入數(shù)據(jù)結(jié)構(gòu)體(數(shù)據(jù)結(jié)構(gòu)),例如對于虛擬鼠標(biāo),得到數(shù)據(jù)結(jié)構(gòu)MOUSE_INPUT_DATA ;對于虛擬鍵盤,得到數(shù)據(jù)結(jié)構(gòu)KEYBOARD_INPUT_DATA。通過設(shè)備擴(kuò)展結(jié)構(gòu)體對輸入數(shù)據(jù)結(jié)構(gòu)體進(jìn)行回調(diào)實(shí)現(xiàn)控制,并返回實(shí)際的結(jié)果。下面詳細(xì)介紹構(gòu)造的驅(qū)動層能夠識別的輸入數(shù)據(jù)結(jié)構(gòu)體,具體包括(I)鼠標(biāo)或者鍵盤通信過程中使用的結(jié)構(gòu)體USHORT MakeCode ;//指定按鍵的掃描碼USHORT Flags ;//按鍵碼,即按下的是什么鍵,例如A,B,ESC,空格鍵等等USHORT Flagsx ;//標(biāo)志移動方式,相對移動還是絕對移動USHORT ButtonFlags ;//標(biāo)志是鼠標(biāo)左鍵按下,左鍵彈起,右鍵按下,右鍵彈起等
等USHORT ButtonData ;//指定鼠標(biāo)滾輪滾動多少個(gè)單位LONG LastX ;//指定X軸絕對坐標(biāo)或者相對坐標(biāo)LONG LastY ;//指定Y軸絕對坐標(biāo)或者相對坐標(biāo)(2)鼠標(biāo)操作過程中使用的結(jié)構(gòu)體USHORT Type ;/*鼠標(biāo)動作類型,0 :移動,I :按鍵,2 :滾輪,3 :移動(支持?jǐn)U展屏眷)USHORT SimulateType ;// 模擬移動時(shí)采用的算法,0 Simple, I Line, 2 Adjust,3 FastUSHORT AxisFlag ;//0 :相對坐標(biāo),I :相對坐標(biāo)int X ;// 目標(biāo)坐標(biāo)int y ;// 目標(biāo)坐標(biāo)USHORT ButtonType ;/*0 :按下和彈出單獨(dú)模擬,I :按下和彈出同時(shí)模擬,并且可以指示多少個(gè)按鍵同時(shí)按下*/USHORT ButtonFlags ;標(biāo)志是鼠標(biāo)左鍵按下,左鍵彈起,右鍵按下,右鍵彈起等等 short int Count ;/*滾動數(shù)量,上滾正數(shù);下滾負(fù)數(shù)*/通過以上描述可以看出,本發(fā)明能夠創(chuàng)建虛擬輸入設(shè)備并使得創(chuàng)建出來的虛擬輸入設(shè)備能夠模擬真實(shí)設(shè)備操作。在創(chuàng)建虛擬鼠標(biāo)時(shí)其操作具有以下特點(diǎn)(I)移動的靈敏度較高,可以精確到移動一個(gè)像素;(2)鼠標(biāo)移動方式可以是絕對坐標(biāo)和相對坐標(biāo);(3)鼠標(biāo)的操作可以支持?jǐn)U展屏幕;(4)可以指定移動的軌跡,可以是一步到位的移動,也可以是多步的移動,甚至是沿著某條曲線移動。通過本發(fā)明的上述實(shí)施例,在軟件屏蔽虛擬輸入設(shè)備消息的情況下也能夠控制虛輸入擬設(shè)備,有效防止了軟件的限制,并且具有操作精度高,速度快的特點(diǎn)。根據(jù)本發(fā)明的實(shí)施例,還提供了一種虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)系統(tǒng)。圖2是根據(jù)本發(fā)明實(shí)施例的虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)系統(tǒng)的結(jié)構(gòu)框圖,如圖2所示,該系統(tǒng)包括虛擬輸入設(shè)備創(chuàng)建模塊10,記錄模塊20,獲取模塊30,控制模塊40。虛擬輸入設(shè)備創(chuàng)建模塊10用于調(diào)用系統(tǒng)API創(chuàng)建虛擬輸入設(shè)備,在驅(qū)動層上掛載虛擬輸入設(shè)備。記錄模塊20用于將系統(tǒng)輸入設(shè)備的函數(shù)地址記錄到虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體中,以使驅(qū)動層自動獲得系統(tǒng)輸入設(shè)備的函數(shù)地址。該虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體在創(chuàng)建虛擬輸入設(shè)備的過程中生成。其中,設(shè)備擴(kuò)展結(jié)構(gòu)體包括但不限于系統(tǒng)輸入設(shè)備的屬性、連接系統(tǒng)輸入設(shè)備的驅(qū)動地址、系統(tǒng)輸入設(shè)備的端口地址、本驅(qū)動所處設(shè)備棧的位置信息,和/或所掛載設(shè)備的地址。獲取模塊30用于獲取應(yīng)用層發(fā)送給虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體。在具體應(yīng)用中,輸入數(shù)據(jù)結(jié)構(gòu)體包括但不限于鍵盤的鍵碼、鍵盤按鍵行為、鼠標(biāo)的坐標(biāo)、鼠標(biāo)的按鍵類型、鼠標(biāo)的點(diǎn)擊行為、鼠標(biāo)滾輪的滾動單位數(shù)值、和鼠標(biāo)移動軌跡。如圖3所示,獲取模塊30進(jìn)一步包括IRP獲取單元32和解析單元34。IRP獲取單元用于獲取應(yīng)用層發(fā)送至驅(qū)動層的控制虛擬輸入設(shè)備的輸入請求包IRP。具體地,IRP獲取單元?jiǎng)?chuàng)建控制設(shè)備對象CD0,利用CDO獲取應(yīng)用層發(fā)送至驅(qū)動層的控制虛擬輸入設(shè)備的IRP。解析單元34用于解析IRP得到虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體??刂颇K40用于驅(qū)動層根據(jù)虛擬輸入設(shè)備中記錄的設(shè)備擴(kuò)展結(jié)構(gòu)體,使用所獲取的輸入數(shù)據(jù)結(jié)構(gòu)體控制虛擬輸入設(shè)備的行為??刂颇K40通過設(shè)備擴(kuò)展結(jié)構(gòu)體對輸入數(shù)據(jù)結(jié)構(gòu)體進(jìn)行回調(diào)實(shí)現(xiàn)控制。
綜上所示,根據(jù)本發(fā)明上述技術(shù)方案,在軟件屏蔽虛擬輸入設(shè)備消息的情況下也能夠控制虛擬輸入設(shè)備,有效地防止軟件的限制,并且具有操作精度高,速度快的特點(diǎn);另夕卜,本發(fā)明好具有良好的兼容行,能夠兼容從windows2000到win7的多個(gè)版本。 以上所述僅為本發(fā)明的實(shí)施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求范圍之內(nèi)。
權(quán)利要求
1.一種虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)方法,其特征在于,包括 調(diào)用系統(tǒng)應(yīng)用程序編程接口 API創(chuàng)建虛擬輸入設(shè)備,在驅(qū)動層上掛載所述虛擬輸入設(shè)備; 將系統(tǒng)輸入設(shè)備的函數(shù)地址記錄到所述虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體中,以使驅(qū)動層自動獲得系統(tǒng)輸入設(shè)備的函數(shù)地址; 獲取應(yīng)用層發(fā)送給所述虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體; 所述驅(qū)動層根據(jù)虛擬輸入設(shè)備中記錄的設(shè)備擴(kuò)展結(jié)構(gòu)體,使用所獲取的輸入數(shù)據(jù)結(jié)構(gòu)體控制虛擬輸入設(shè)備的行為。
2.如權(quán)利要求I所述的方法,其特征在于,所述設(shè)備擴(kuò)展結(jié)構(gòu)體,包括系統(tǒng)輸入設(shè)備 的屬性、連接系統(tǒng)輸入設(shè)備的驅(qū)動地址、系統(tǒng)輸入設(shè)備的端口地址、本驅(qū)動所處設(shè)備棧的位置信息,和/或所掛載設(shè)備的地址。
3.如權(quán)利要求I所述的方法,其特征在于,所述輸入數(shù)據(jù)結(jié)構(gòu)體,包括鍵盤的鍵碼、鍵盤按鍵行為、鼠標(biāo)的坐標(biāo)、鼠標(biāo)的按鍵類型、鼠標(biāo)的點(diǎn)擊行為、鼠標(biāo)滾輪的滾動單位數(shù)值、和/或鼠標(biāo)移動軌跡。
4.如權(quán)利要求I所述的方法,其特征在于,所述虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體在創(chuàng)建所述虛擬輸入設(shè)備的過程中生成。
5.如權(quán)利要求I所述的方法,其特征在于,所述獲取應(yīng)用層發(fā)送給所述虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體的步驟,包括 獲取應(yīng)用層發(fā)送至驅(qū)動層的控制所述虛擬輸入設(shè)備的輸入請求包IRP ; 解析所述IRP得到所述虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述獲取應(yīng)用層發(fā)送至驅(qū)動層的控制所述虛擬輸入設(shè)備的IRP的步驟,包括 創(chuàng)建控制設(shè)備對象CDO ; 利用所述CDO獲取應(yīng)用層發(fā)送至驅(qū)動層的控制所述虛擬輸入設(shè)備的TRP。
7.如權(quán)利要求I所述的方法,其特征在于,所述控制虛擬輸入設(shè)備的行為的步驟,包括通過設(shè)備擴(kuò)展結(jié)構(gòu)體對輸入數(shù)據(jù)結(jié)構(gòu)體進(jìn)行回調(diào)實(shí)現(xiàn)控制。
8.—種虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)系統(tǒng),其特征在于,包括 虛擬輸入設(shè)備創(chuàng)建模塊,用于調(diào)用系統(tǒng)應(yīng)用程序編程接口 API創(chuàng)建虛擬輸入設(shè)備,在驅(qū)動層上掛載所述虛擬輸入設(shè)備; 記錄模塊,用于將系統(tǒng)輸入設(shè)備的函數(shù)地址記錄到所述虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體中,以使驅(qū)動層自動獲得系統(tǒng)輸入設(shè)備的函數(shù)地址; 獲取模塊,用于獲取應(yīng)用層發(fā)送給所述虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體; 控制模塊,用于所述驅(qū)動層根據(jù)虛擬輸入設(shè)備中記錄的設(shè)備擴(kuò)展結(jié)構(gòu)體,使用所獲取的輸入數(shù)據(jù)結(jié)構(gòu)體控制虛擬輸入設(shè)備的行為。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述設(shè)備擴(kuò)展結(jié)構(gòu)體,包括系統(tǒng)輸入設(shè)備的屬性、連接系統(tǒng)輸入設(shè)備的驅(qū)動地址、系統(tǒng)輸入設(shè)備的端口地址、本驅(qū)動所處設(shè)備棧的位置信息,和/或所掛載設(shè)備的地址。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述輸入數(shù)據(jù)結(jié)構(gòu)體,包括鍵盤的鍵碼、鍵盤按鍵行為、鼠標(biāo)的坐標(biāo)、鼠標(biāo)的按鍵類型、鼠標(biāo)的點(diǎn)擊行為、鼠標(biāo)滾輪的滾動單位數(shù)值、和/或鼠標(biāo)移動軌跡。
11.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體在創(chuàng)建所述虛擬輸入設(shè)備的過程中生成。
12.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述獲取模塊,包括 IRP獲取單元,用于獲取應(yīng)用層發(fā)送至驅(qū)動層的控制所述虛擬輸入設(shè)備的輸入請求包IRP ; 解析単元,用于解析所述IRP得到所述虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,所述IRP獲取單元,創(chuàng)建控制設(shè)備對象CDO,利用所述CDO獲取應(yīng)用層發(fā)送至驅(qū)動層的控制所述虛擬輸入設(shè)備的IRP。
14.如權(quán)利要求8所述的系統(tǒng),其特征在干,所述控制模塊,通過設(shè)備擴(kuò)展結(jié)構(gòu)體對輸入數(shù)據(jù)結(jié)構(gòu)體進(jìn)行回調(diào)實(shí)現(xiàn)控制。
全文摘要
本發(fā)明公開了一種虛擬輸入設(shè)備在驅(qū)動層的實(shí)現(xiàn)方法及其系統(tǒng),該方法包括調(diào)用系統(tǒng)應(yīng)用程序編程接口創(chuàng)建虛擬輸入設(shè)備,在驅(qū)動層上掛載虛擬輸入設(shè)備;將系統(tǒng)輸入設(shè)備的函數(shù)地址記錄到虛擬輸入設(shè)備的設(shè)備擴(kuò)展結(jié)構(gòu)體中,以使驅(qū)動層自動獲得系統(tǒng)輸入設(shè)備的函數(shù)地址;獲取應(yīng)用層發(fā)送給虛擬輸入設(shè)備的輸入數(shù)據(jù)結(jié)構(gòu)體;驅(qū)動層根據(jù)虛擬輸入設(shè)備中記錄的設(shè)備擴(kuò)展結(jié)構(gòu)體,使用所獲取的輸入數(shù)據(jù)結(jié)構(gòu)體控制虛擬輸入設(shè)備的行為。通過本發(fā)明,實(shí)現(xiàn)了在軟件屏蔽虛擬輸入設(shè)備消息的情況下控制虛擬輸入設(shè)備的效果。
文檔編號G06F3/01GK102854974SQ20111018146
公開日2013年1月2日 申請日期2011年6月30日 優(yōu)先權(quán)日2011年6月30日
發(fā)明者張輝 申請人:奇智軟件(北京)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
墨江| 常德市| 平远县| 崇礼县| 大理市| 衡南县| 舞阳县| 保山市| 蚌埠市| 桑日县| 兴海县| 乡宁县| 花莲县| 崇明县| 新绛县| 理塘县| 光山县| 宜宾县| 涿州市| 保康县| 宣武区| 临安市| 江门市| 贡嘎县| 历史| 广平县| 宜君县| 萝北县| 田林县| 阳西县| 葫芦岛市| 儋州市| 房山区| 社旗县| 日土县| 固始县| 神池县| 怀柔区| 浪卡子县| 饶平县| 昆明市|