亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種pci硬件應(yīng)用程序兼容運行的方法和裝置的制作方法

文檔序號:6374595閱讀:224來源:國知局
專利名稱:一種pci硬件應(yīng)用程序兼容運行的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明屬于硬件控制領(lǐng)域,尤其涉及一種PCI硬件應(yīng)用程序兼容運行的方法和裝置。
背景技術(shù)
PCI (Peripheral Component Interconnection,周邊兀件擴展接口)硬件應(yīng)用程序都要基于底層PCI的硬件驅(qū)動,在操作系統(tǒng)層次上,所有的硬件資源都會作為一個句柄(Handle,本質(zhì)上是一個特定的整型數(shù))被識別和使用,由于PCI設(shè)備硬件的特殊性,當(dāng)一個進程占用了這個設(shè)備的句柄的時候,其他進程對這個設(shè)備的操作(包括掃描、打開等)都將會產(chǎn)生錯誤,這就是PCI硬件驅(qū)動程序的進程獨占性。 在實際的工程實踐中,往往存在需要使用多個不同應(yīng)用目的的應(yīng)用程序同時對不同的PCI設(shè)備進行操作或是在不同時對同一PCI設(shè)備進行操作的情況。在這種情況下,當(dāng)?shù)谝粋€程序運行之后,其他所有程序的運行都會出現(xiàn)異常。出現(xiàn)異常的原因是除第一個打開的應(yīng)用程序外的程序在運行過程中,會對第一程序已經(jīng)占用的設(shè)備硬件資源進行諸如掃描或者打開操作,由于驅(qū)動進程的獨占性,會導(dǎo)致出錯。而深層次的原因是,由于PCI協(xié)議導(dǎo)致的PCI設(shè)備可以在位于不同的插槽上,其識別過程需要對所有的PCI設(shè)備進行掃描和打開、再通過Vendor ID和Device ID(在某些特殊情況下,如多塊PCI設(shè)備具有相同的VendorID和Device ID,還需要對特定寄存器進行讀取)的判定來識別設(shè)備。歸根結(jié)底是,應(yīng)用程序之間沒有共享同一份PCI硬件設(shè)備數(shù)據(jù)結(jié)構(gòu)列表,而是要各自獨占這份PCI硬件設(shè)備數(shù)據(jù)結(jié)構(gòu)列表,從而導(dǎo)致了異常。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種PCI硬件應(yīng)用程序兼容運行的方法和裝置,通過服務(wù)程序掃描并獲取描述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,然后通過向各個應(yīng)用程序分發(fā)實現(xiàn)共享該列表,各個應(yīng)用程序能夠通過所述可以共享的PCI設(shè)備硬件數(shù)據(jù)結(jié)構(gòu)列表對目標(biāo)PCI硬件設(shè)備進行操作。一種PCI硬件應(yīng)用程序兼容運行的方法,所述方法應(yīng)用于當(dāng)調(diào)用應(yīng)用程序?qū)CI硬件進行操作時,包括檢測當(dāng)前調(diào)用的對PCI硬件進行操作的應(yīng)用程序的個數(shù);當(dāng)所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件,獲取描述所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給當(dāng)前對所述PCI硬件進行操作的所有的應(yīng)用程序,使所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作。上述的PCI硬件應(yīng)用程序兼容運行的方法,優(yōu)選的,還包括當(dāng)所述應(yīng)用程序的個數(shù)為一個時,啟動所述應(yīng)用程序,掃描并打開所述PCI硬件,獲取所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表;
依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,應(yīng)用所述應(yīng)用程序?qū)λ瞿繕?biāo)PCI硬件進行操作。上述的PCI硬件應(yīng)用程序兼容運行的方法,優(yōu)選的,所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)包含的成員變量包括表征硬件板卡資源信息的句柄Handle ;表征所述硬件板卡的身份信息的ID ;表征所述硬件板卡在PCI插槽上的位置的插槽Slot。上述的PCI硬件應(yīng)用程序兼容運行的方法,優(yōu)選的,當(dāng)所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件包括

啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序?qū)λ鯬CI硬件進行掃描,依據(jù)掃描結(jié)果 對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的ID信息和Slot信息進行更新;應(yīng)用所述服務(wù)程序打開所述PCI硬件,對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的Handle信息進行更新,并得到所述PCI硬件的操作通道。上述的PCI硬件應(yīng)用程序兼容運行的方法,優(yōu)選的,當(dāng)所述應(yīng)用程序的個數(shù)為一個時,啟動所述應(yīng)用程序,掃描并打開所述PCI硬件包括啟動所述應(yīng)用程序,應(yīng)用所述應(yīng)用程序?qū)λ鯬CI硬件進行掃描,依據(jù)掃描結(jié)果對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的ID信息和Slot信息進行更新;應(yīng)用所述應(yīng)用程序打開所述PCI硬件,對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的Handle信息進行更新,并得到所述PCI硬件的操作通道。上述的PCI硬件應(yīng)用程序兼容運行的方法,優(yōu)選的,對所述PCI硬件進行操作的應(yīng)用程序在同一時間內(nèi)對應(yīng)的目標(biāo)PCI硬件不同;所述PCI硬件進行操作的應(yīng)用程序?qū)ν荒繕?biāo)PCI硬件的操作為在不同時間分別進行。上述的PCI硬件應(yīng)用程序兼容運行的方法,優(yōu)選的,所述將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給對所述PCI硬件進行操作的所有的應(yīng)用程序包括應(yīng)用所述服務(wù)程序通過反射調(diào)用獲取所述應(yīng)用程序的公開接口,并通過所述公開接口將所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給所述應(yīng)用程序。上述的PCI硬件應(yīng)用程序兼容運行的方法,優(yōu)選的,所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作包括依據(jù)目標(biāo)PCI硬件的ID信息和Slot信息,應(yīng)用所述應(yīng)用程序獲得所述數(shù)據(jù)結(jié)構(gòu)列表中對應(yīng)的數(shù)據(jù)結(jié)構(gòu);依據(jù)所述數(shù)據(jù)結(jié)構(gòu)中的Handle信息,應(yīng)用所述應(yīng)用程序?qū)λ瞿繕?biāo)PCI硬件進行操作?!NPCI硬件應(yīng)用程序兼容運行的裝置,所述裝置應(yīng)用于當(dāng)調(diào)用應(yīng)用程序?qū)CI硬件進行操作時,包括檢測器,用于檢測當(dāng)前調(diào)用的對PCI硬件進行操作的應(yīng)用程序的個數(shù);第一控制器,用于當(dāng)所述檢測器檢測得到所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件,獲取所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給當(dāng)前對所述PCI硬件進行操作的所有的應(yīng)用程序,使所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作。上述的PCI硬件應(yīng)用程序兼容運行的裝置,優(yōu)選的,還包括第二控制器,用于當(dāng)所述檢測器檢測得到所述應(yīng)用程序的個數(shù)為一個時,啟動所述應(yīng)用程序,掃描并打開所述PCI硬件,獲得所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,應(yīng)用所述應(yīng)用程序?qū)λ瞿繕?biāo)PCI硬件進行操作。本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法所述方法應(yīng)用于當(dāng)調(diào)用應(yīng)用程序?qū)CI硬件進行操作時,包括檢測當(dāng)前調(diào)用的對PCI硬件進行操作的應(yīng)用程序的個數(shù);當(dāng)所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件,獲取描述所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給當(dāng)前對所述PCI硬件進行操作的所有的應(yīng)用程序,使所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作。采用本發(fā)明的提供的一種PCI硬件應(yīng) 用程序兼容運行的方法,當(dāng)對PCI硬件進行操作的應(yīng)用程序的個數(shù)為至少兩個時,通過服務(wù)程序掃描并獲取描述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,然后通過向各個應(yīng)用程序分發(fā)實現(xiàn)共享該列表,各個應(yīng)用程序能夠通過所述可以共享的PCI設(shè)備硬件數(shù)據(jù)結(jié)構(gòu)列表對目標(biāo)PCI硬件設(shè)備進行操作,避免應(yīng)用程序再次掃描導(dǎo)致的異常,使得各個應(yīng)用程序能夠兼容運行。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法實施例的流程圖;圖2是本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法實施例的第一具體流程圖;圖3是本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法實施例的第二具體流程圖;圖4是本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法實施例的PCI硬件的數(shù)據(jù)結(jié)構(gòu);圖5是本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法實施例的應(yīng)用程序信息單元的數(shù)據(jù)結(jié)構(gòu);圖6是本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法實施例的第三具體流程圖;圖7是本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法實施例的另一種流程圖;圖8是本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法實施例的第四具體流程圖;圖9是本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的裝置實施例的結(jié)構(gòu)示意圖;圖10是本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的裝置實施例的另一種結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。反射(Reflection)是現(xiàn)代開發(fā)語言(如Java和C#)及其相應(yīng)的運行時庫(如JDK和.NET)所支持的一種重要機制。通過反射,可以在運行時獲得程序集中每一個類型(包括類、結(jié)構(gòu)、委托、接口和枚舉等)的成員,包括方法、屬性、事件,以及構(gòu)造函數(shù)等。還可以獲得每個成員的名稱、限定符和參數(shù)等。通過反射即可對每一個類型完全了解。當(dāng)獲得了構(gòu)造函數(shù)的信息時,即使在某一對象的類型在編譯時還不知道,也可直接創(chuàng)建該對象。

本發(fā)明就是基于反射的上述特點,通過服務(wù)程序?qū)CI硬件的數(shù)據(jù)結(jié)構(gòu)列表分享 給多個應(yīng)用程序,進而實現(xiàn)多個應(yīng)用程序?qū)CI操作的兼容運行。參見圖1,示出了本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法實施例的流程圖,包括步驟SlOl :檢測當(dāng)前調(diào)用的對PCI硬件進行操作的應(yīng)用程序的個數(shù);通過采用本發(fā)明的方法,可以實現(xiàn)多個應(yīng)用程序同時對PCI硬件進行操作,多個應(yīng)用程序和一個應(yīng)用程序?qū)CI硬件進行操作的處理方式可以不同,故需要對對PCI硬件進行操作的應(yīng)用程序的個數(shù)進行檢測。步驟S102 :當(dāng)所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件,獲取所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給當(dāng)前對所述PCI硬件進行操作的所有的應(yīng)用程序,使所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作。實時檢測當(dāng)前調(diào)用的對PCI硬件進行操作的應(yīng)用程序的個數(shù),當(dāng)對PCI硬件進行操作的應(yīng)用程序至少為兩個時,需要這些應(yīng)用程序兼容運行,此時啟動預(yù)設(shè)的服務(wù)程序,月艮務(wù)程序完成掃描和打開所述PCI硬件的動作,得到PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,所述應(yīng)用程序根據(jù)該數(shù)據(jù)結(jié)構(gòu)列表中的信息得到目標(biāo)PCI硬件的信息并對目標(biāo)PCI硬件進行操作。對所述PCI硬件進行操作的所有的應(yīng)用程序在同一時刻操作的目標(biāo)PCI硬件不同,這是由硬件的操作特點決定的,同一時間內(nèi)對一個硬件只能有一個操作(讀或?qū)?。參見圖2示出的第一具體流程圖,本步驟可具體包括步驟S201 :當(dāng)所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件,獲取所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表;當(dāng)所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序獲取PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表。參見圖3示出的第二具體流程圖,步驟S201可具體包括步驟S301 :啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序?qū)λ鯬CI硬件進行掃描,依據(jù)掃描結(jié)果對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的ID信息和Slot信息進行更新;判斷對PCI硬件進行操作的應(yīng)用程序的個數(shù),當(dāng)判斷結(jié)果為對PCI硬件進行操作的應(yīng)用程序的個數(shù)為至少兩個時,有多個應(yīng)用程序?qū)CI硬件進行操作,需要兼容運行這些應(yīng)用程序,啟動預(yù)設(shè)的服務(wù)程序,所述應(yīng)用程序通過服務(wù)程序獲取到可分享的PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表。參見圖4示出了 PCI硬件的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)包含的成員變量包括句柄Handle、身份 ID (Identity)和插槽 Slot。每個數(shù)據(jù)結(jié)構(gòu)列表中包含有多個數(shù)據(jù)結(jié)構(gòu),每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)一個PCI硬件板卡。其中,句柄Handle表征硬件板卡資源信息;在沒有打開PCI硬件之前,Handle的數(shù)值為Null,在打開之后,其數(shù)值為一個整型 數(shù),比如十進制的632531或者十六進制的0x9A6D3等。

ID表征所述硬件板卡的身份信息;所述ID內(nèi)部包括兩個數(shù)值一個是Vendor ID,代表了該板卡的廠商的ID,一個是Device ID,代表了該板卡的類型ID。實際操作中,一臺電腦上的設(shè)備中,上述兩個ID數(shù)值一般不同,應(yīng)用程序通過這兩個ID數(shù)值確認(rèn)某一板卡是否是想要操作的目標(biāo)PCI硬件板卡。插槽Slot表征所述硬件板卡在PCI插槽上的物理位置。插槽表示的是該板卡位于哪個插槽上,即板卡在插槽的具體位置。Slot本身包括三個變量,其中一個描述了插槽slot,一個描述了總線bus,通過這兩個變量就可以準(zhǔn)確定位某一塊板卡的具體位置。PCI硬件的物理地址是由Slot所描述的,即該硬件位于哪個插槽上,邏輯地址由Handle決定的,即描述了在操作系統(tǒng)的視角,該PCI硬件應(yīng)該是第幾個設(shè)備,應(yīng)該給其分配哪些內(nèi)存空間映射等。掃描(Scan)的目的是獲得所有PCI插槽上的PCI設(shè)備的信息,即在哪些插槽上有設(shè)備,哪些插槽上沒有設(shè)備,這些PCI設(shè)備的信息包括Vendor ID, Device ID和Slot。所述服務(wù)程序?qū)CI硬件進行掃描,掃描得到PCI設(shè)備的信息后,應(yīng)用程序并不能只采用這些設(shè)備信息對所述PCI設(shè)備進行操作,需要后續(xù)的打開步驟。步驟S302 :應(yīng)用所述服務(wù)程序打開所述PCI硬件,對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的Handle信息進行更新,并得到所述PCI硬件的操作通道。打開的目的是讓代表一個具體硬件設(shè)備的PCI Device數(shù)據(jù)結(jié)構(gòu)類中的句柄Handle由Null變?yōu)橐粋€具體的整型數(shù)。其本質(zhì)是操作系統(tǒng)給這個設(shè)備分配了一個代表該設(shè)備資源的標(biāo)號,相應(yīng)的創(chuàng)建一個通道,比如,當(dāng)應(yīng)用程序調(diào)用讀寫函數(shù)前往該Handle代表的設(shè)備后進行讀寫操作時,相當(dāng)于通過該通道實現(xiàn)了對具體設(shè)備硬件設(shè)備的操作。即對所述PCI硬件進行打開,操作系統(tǒng)給PCI硬件相應(yīng)的板卡分配特定的資源號并創(chuàng)建對所述板卡進行操作的操作通道,此時應(yīng)用系統(tǒng)通過該句柄Handle訪問所述PCI硬件中相應(yīng)的板卡。上述的代表該設(shè)備資源的標(biāo)號就是一個特殊的整型數(shù),將被保存在Handle這個變量中。從操作系統(tǒng)的角度上看,所有的設(shè)備都是一個資源,包括網(wǎng)口、USB接口、PCI設(shè)備等,系統(tǒng)會給所有的設(shè)備做一個排列并給每個設(shè)備一個標(biāo)號來管理這些設(shè)備。步驟S202 :將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給當(dāng)前對所述PCI硬件進行操作的所有的應(yīng)用程序,使所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作。應(yīng)用所述服務(wù)程序通過反射調(diào)用獲取所述應(yīng)用程序的公開接口,并通過所述公開接口將所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給所述應(yīng)用程序。實際實施中,服務(wù)程序是通過一個XML格式的配置文件來管理多個應(yīng)用程序同時運行。服務(wù)程序的配置文件包含一個列表,列表包含多個應(yīng)用程序信息單兀,每一個應(yīng) 用程序信息單元對應(yīng)了一個具體的應(yīng)用程序的相關(guān)信息,通過讀取這個應(yīng)用程序信息單元里面的信息,服務(wù)程序可以自動生成對這個應(yīng)用程序的調(diào)用入口即公開接口(例如在服務(wù)程序中的一個按鈕,點擊該按鈕可以運行這個應(yīng)用程序邏輯),并在調(diào)用過程中實現(xiàn)對這個應(yīng)用程序邏輯分發(fā)同一份硬件設(shè)備資源(PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表)的工作。參見圖5所示的應(yīng)用程序信息單元的數(shù)據(jù)結(jié)構(gòu),包括4種變量,具體為string ExeName,表征應(yīng)用程序的路徑;string InvokeName,表征應(yīng)用程序的主界面窗體的類名;string Description,表征在服務(wù)程序中對該應(yīng)用程序調(diào)用入口描述;bool NeedSetDevices,表征是否需要設(shè)置PCI設(shè)備列表。每個應(yīng)用程序包含有一個公開接口 Public void SetDevices (List〈PCIDevice>devices)即應(yīng)用程序的主界面窗體類中的一個公開函數(shù),應(yīng)用所述服務(wù)程序通過反射調(diào)用該應(yīng)用程序的主界面窗體的類名進而調(diào)用該公開接口,調(diào)用該公開接口實現(xiàn)了分發(fā)和共享描述當(dāng)前所有PCI硬件設(shè)備的數(shù)據(jù)結(jié)構(gòu)列表,調(diào)用完成后通過該類型動態(tài)生成應(yīng)用程序界面對象并顯示,服務(wù)程序通過該公開接口將PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給該應(yīng)用程序,同樣的所有對PCI硬件進行操作的應(yīng)用程序均通過各自的公開接口得到服務(wù)程序發(fā)布的PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表。在本發(fā)明提供的方法中,多個應(yīng)用程序同時對PCI硬件進行操作,應(yīng)用程序不再進行掃描得到描述當(dāng)前所有PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表的步驟,而是直接從服務(wù)程序處得到描述當(dāng)前所有PCI硬件設(shè)備的數(shù)據(jù)結(jié)構(gòu)列表。所有的應(yīng)用程序獲得的是同一個數(shù)據(jù)結(jié)構(gòu)列表,S卩,所有的應(yīng)用程序內(nèi)部包括的一個PCI硬件列表的變量得到的是相同的內(nèi)容,指向的是同一個內(nèi)存空間,實現(xiàn)了所有的應(yīng)用程序分享同一個描述當(dāng)前所有PCI硬件設(shè)備的數(shù)據(jù)結(jié)構(gòu)列表,能夠分別對其目標(biāo)PCI硬件進行兼容操作。服務(wù)程序?qū)λ鯬CI硬件進行掃描并打開后,其對應(yīng)的數(shù)據(jù)結(jié)構(gòu)中的Handle變量將獲得一個具體的資源號,此時應(yīng)用系統(tǒng)通過該數(shù)據(jù)結(jié)構(gòu)中的句柄Handle訪問所述PCI硬件板卡,比如,當(dāng)應(yīng)用程序調(diào)用讀寫函數(shù)前往該Handle代表的設(shè)備進行讀寫操作時,相當(dāng)于通過操作系統(tǒng)為這個資源號創(chuàng)建的一個通道實現(xiàn)了對具體設(shè)備硬件設(shè)備的操作。某一應(yīng)用程序?qū)CI硬件進行操作時,目標(biāo)硬件可能為一個,也可為多個。實際實施中,當(dāng)增加新的應(yīng)用程序時,只需要修改服務(wù)程序的配置文件,增加需要同時兼容運行的應(yīng)用程序?qū)?yīng)的應(yīng)用程序信息單元,則服務(wù)程序就會自動生成對要運行的應(yīng)用程序的調(diào)用入口,用戶就可以在服務(wù)程序上通過該入口運行這些應(yīng)用程序。參見圖6示出的第三具體流程圖,步驟S202中應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作具體包括步驟S401 :依據(jù)目標(biāo)PCI硬件的ID信息和Slot信息,應(yīng)用所述應(yīng)用程序獲得所述數(shù)據(jù)結(jié)構(gòu)列表中對應(yīng)的數(shù)據(jù)結(jié)構(gòu);在PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表中包含了全部PCI硬件的信息,在數(shù)據(jù)結(jié)構(gòu)列表中,每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)一個PCI硬件設(shè)備,Slot表示目標(biāo)PCI硬件所在的具體物理位置,應(yīng)用程序?qū)CI硬件中的某目標(biāo)PCI硬件進行操作,應(yīng)用程序依據(jù)目標(biāo)PCI硬件的ID信息和Slot信息在數(shù)據(jù)結(jié)構(gòu)列表中得到目標(biāo)PCI對應(yīng)的數(shù)據(jù)結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)中包含有句柄Handle,在步驟S302中應(yīng)用所述服務(wù)程序?qū)λ鯬CI硬件進行打開,操作系統(tǒng)給PCI硬件板卡分配資源號并創(chuàng)建對所述板卡進行操作的操作通道,獲得到所述Handle就是得到了通往PCI硬件的操作通道。步驟S402 :依據(jù)所述數(shù)據(jù)結(jié)構(gòu)中的Handle信息,應(yīng)用所述應(yīng)用程序?qū)λ瞿繕?biāo)PCI硬件進行操作。

應(yīng)用程序得到目標(biāo)PCI硬件的信息,該信息中包含有Handle,也是就獲得了通往 目標(biāo)PCI硬件的操作通道,此時應(yīng)用程序就能通過該操作通道訪問所述PCI硬件中相應(yīng)的設(shè)備,即對目標(biāo)PCI硬件設(shè)備進行操作。通過采用本發(fā)明的方法,可以實現(xiàn)多個應(yīng)用程序同時對PCI硬件進行操作,對所述PCI硬件進行操作的應(yīng)用程序在同一時間內(nèi)對應(yīng)的目標(biāo)PCI硬件不同;所述PCI硬件進行操作的應(yīng)用程序?qū)ν荒繕?biāo)PCI硬件的操作為在不同時間分別進行。這是因為PCI硬件的讀寫特性制約的,某一時間點只能有一個應(yīng)用程序?qū)δ硞€PCI硬件進行操作(包括讀操作或是寫操作)。參見圖7,示出了本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法實施例的另一種流程圖,本流程圖是在圖I的步驟SlOl之后還包括步驟S103 :當(dāng)所述應(yīng)用程序的個數(shù)為一個時,啟動所述應(yīng)用程序,掃描并打開所述PCI硬件,獲取所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表;判斷對PCI硬件進行操作的應(yīng)用程序的個數(shù),當(dāng)判斷結(jié)果為,對PCI硬件進行操作的應(yīng)用程序的個數(shù)為一個時,啟動所述應(yīng)用程序,該應(yīng)用程序直接對PCI硬件進行操作。參見圖8示出的第四具體流程圖,步驟S103可具體包括步驟S501 :啟動所述應(yīng)用程序,應(yīng)用所述應(yīng)用程序?qū)λ鯬CI硬件進行掃描,依據(jù)掃描結(jié)果對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的ID信息和Slot信息進行更新;掃描的目的是獲得所有PCI插槽上的PCI設(shè)備的信息,即在哪些插槽上有設(shè)備,哪些插槽上沒有設(shè)備,這些PCI設(shè)備的信息包括Vendor ID, Device ID和Slot等。所述應(yīng)用程序?qū)CI硬件進行掃描,掃描得到PCI設(shè)備的信息后,應(yīng)用程序并不能只采用這些設(shè)備信息對所述PCI設(shè)備進行操作,需要后續(xù)的打開步驟。步驟S502 :應(yīng)用所述應(yīng)用程序打開所述PCI硬件,對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的Handle信息進行更新,并得到所述PCI硬件的操作通道。打開的目的是讓代表一個具體硬件設(shè)備的PCI Device數(shù)據(jù)結(jié)構(gòu)類中的句柄Handle由Null變?yōu)橐粋€具體的整型數(shù)。其本質(zhì)是操作系統(tǒng)給這個設(shè)備分配了一個代表該設(shè)備資源的標(biāo)號,相應(yīng)的創(chuàng)建一個通道,比如,當(dāng)應(yīng)用程序調(diào)用讀寫函數(shù)前往該Handle代表的設(shè)備后進行讀寫操作時,相當(dāng)于通過該通道實現(xiàn)了對具體設(shè)備硬件設(shè)備的操作。即對所述PCI硬件進行打開,操作系統(tǒng)給PCI硬件相應(yīng)的板卡分配資源號并創(chuàng)建對所述板卡進行操作的操作通道,此時應(yīng)用系統(tǒng)通過該句柄Handle訪問所述PCI硬件中相應(yīng)的板卡。上述的代表該設(shè)備資源的標(biāo)號就是一個特殊的整型數(shù),將被保存在Handle這個變量中。從操作系統(tǒng)的角度上看,所有的設(shè)備都是一個資源,包括網(wǎng)口、USB接口、PCI設(shè)備等,系統(tǒng)會給所有的設(shè)備做一個排列并給每個設(shè)備一個標(biāo)號來管理這些設(shè)備。在PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表中包含了當(dāng)前全部PCI硬件的信息,應(yīng)用程序?qū)CI硬件中的某目標(biāo)PCI硬件進行操作,在所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表中獲取目標(biāo)PIC硬件的信息,該信息中包含有句柄Handle,對所述PCI硬件進行打開,操作系統(tǒng)給PCI硬件相應(yīng)的板卡分配特定的資源號并創(chuàng)建對所述板卡進行操作的操作通道,獲得到所述Handle就是得到了通往PCI硬件的操作通道。

步驟S104:依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,應(yīng)用所述應(yīng)用程序?qū)λ瞿繕?biāo)PCI硬件進行操作。 當(dāng)應(yīng)用程序?qū)λ鯬CI硬件進行掃描并打開后,操作系統(tǒng)分配給PCI硬件相應(yīng)的板卡特定的資源號,并創(chuàng)建通道,此時應(yīng)用系統(tǒng)通過該數(shù)據(jù)結(jié)構(gòu)中的Handle的訪問所述PCI硬件設(shè)備,比如,當(dāng)應(yīng)用程序調(diào)用讀寫函數(shù)前往該Handle代表的設(shè)備后進行讀寫操作時,相當(dāng)于通過該通道實現(xiàn)了對具體設(shè)備硬件設(shè)備的操作。某一應(yīng)用程序?qū)CI硬件進行操作時,目標(biāo)硬件可能為一個,也可為多個。所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作的過程與圖6所示的第三具體流程圖中步驟相同,不再贅述。由上述可知,本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的方法,包括,檢測當(dāng)前調(diào)用的對PCI硬件進行操作的應(yīng)用程序的個數(shù);當(dāng)所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件,獲取所述描述當(dāng)前所有PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給當(dāng)前對所述PCI硬件進行操作的所有的應(yīng)用程序,使所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作。當(dāng)所述應(yīng)用程序的個數(shù)為一個時,啟動所述應(yīng)用程序掃描并打開所述PCI硬件,獲取所述描述當(dāng)前所有PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表;依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,應(yīng)用所述應(yīng)用程序?qū)λ瞿繕?biāo)PCI硬件進行操作。采用本發(fā)明的提供的一種PCI硬件應(yīng)用程序兼容運行的方法,當(dāng)對PCI硬件進行操作的應(yīng)用程序的個數(shù)為一時,應(yīng)用程序可直接獲取PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表;當(dāng)所述個數(shù)為至少兩個時,服務(wù)程序得到PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并將該數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給每個應(yīng)用程序分享,解決了當(dāng)多個應(yīng)用程序同時操作PCI硬件時導(dǎo)致的異常,使得各個應(yīng)用程序能夠兼容運行。與上述的方法相對應(yīng)的,本發(fā)明實施例中還提供了一種PCI硬件應(yīng)用程序兼容運行的裝置。參見圖9,示出了本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的裝置實施例的結(jié)構(gòu)示意圖,包括檢測器101和第一控制器102。其中,所述檢測器101用于檢測當(dāng)前調(diào)用的對PCI硬件進行操作的應(yīng)用程序的個數(shù);通過采用本發(fā)明的方法,可以實現(xiàn)多個應(yīng)用程序同時對PCI硬件進行操作,多個應(yīng)用程序和一個應(yīng)用程序?qū)CI硬件進行操作的處理方式不同,故需要檢測器101檢測對PCI硬件進行操作的應(yīng)用程序的個數(shù)。其中,所述第一控制器102用于當(dāng)所述檢測器101檢測得到所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件,獲取所述描述當(dāng)前所有PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給當(dāng)前對所述PCI硬件進行操作的所有的應(yīng)用程序,使所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作。實時檢測當(dāng)前調(diào)用的對PCI硬件進行操作的應(yīng)用程序的個數(shù),當(dāng)對PCI硬件進行操作的應(yīng)用程序至少為兩個時,需要這些應(yīng)用程序兼容運行,此時第一控制器102啟動預(yù)設(shè)的服務(wù)程序,應(yīng)用所述服務(wù)程序完成掃描和打開所述PCI硬件的動作,得到描述當(dāng)前所有PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,使得所述應(yīng)用程序根據(jù)該數(shù)據(jù)結(jié)構(gòu)列表中的信息得到目標(biāo)PCI硬件的信息并對目標(biāo)PCI硬件進行操作。PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)包含的成員變量包括句柄Handle、 ID和插槽Slot等。其中,句柄Handle表征硬件板卡資源信息;在沒有打開PCI硬件之前,Handle的數(shù)值為NulI,在打開之后,其數(shù)值為一個特殊的整型數(shù),比如十進制的632531或者十六進制的0x9A6D3等。ID表征所述硬件板卡的身份信息;所述ID內(nèi)部包括兩個數(shù)值一個是Vendor ID,代表了該板卡的廠商的ID,一個是Device ID,代表了該板卡的類型ID。實際操作中,一臺電腦上的設(shè)備中,上述兩個ID數(shù)值一般不同,應(yīng)用程序通過這兩個ID數(shù)值確認(rèn)某一板卡是否是想要操作的目標(biāo)PCI硬件板卡。插槽Slot表征所述硬件板卡在PCI插槽上的物理位置。插槽表示的是該板卡位于哪個插槽上,即板卡在插槽的具體位置。Slot本身包括三個變量,其中一個描述了插槽slot,一個描述了總線bus,通過這兩個變量就可以準(zhǔn)確定位某一塊板卡的具體位置。PCI硬件的物理地址是由Slot所描述的,即該硬件位于哪個插槽上,邏輯地址由Handle決定的,即描述了在操作系統(tǒng)的視角,該PCI硬件應(yīng)該是第幾個設(shè)備,應(yīng)該給其分配哪些內(nèi)存空間映射等。第一控制器102應(yīng)用所述服務(wù)程序進行掃描的目的是獲得所有PCI插槽上的PCI設(shè)備的信息,即在哪些插槽上有設(shè)備,哪些插槽上沒有設(shè)備,這些PCI設(shè)備的信息包括Vendor ID、Device ID 和 Slot 等。第一控制器102應(yīng)用所述服務(wù)程序進行打開的目的是讓代表一個具體硬件設(shè)備的PCI Device數(shù)據(jù)結(jié)構(gòu)類中的句柄Handle由Null變?yōu)橐粋€具體的整型數(shù),其本質(zhì)是操作系統(tǒng)給這個設(shè)備分配了一個代表該設(shè)備資源的標(biāo)號,相應(yīng)的創(chuàng)建一個通道,比如,當(dāng)應(yīng)用程序調(diào)用讀寫函數(shù)前往該Handle代表的設(shè)備后進行讀寫操作時,相當(dāng)于通過該通道實現(xiàn)了對具體設(shè)備硬件設(shè)備的操作。即對所述PCI硬件進行打開,操作系統(tǒng)給PCI硬件相應(yīng)的板卡分配資源號并創(chuàng)建對所述板卡進行操作的操作通道,此時應(yīng)用系統(tǒng)通過該句柄Handle訪問所述PCI硬件中相應(yīng)的板卡。上述的代表該設(shè)備資源的標(biāo)號就是一個特殊的整型數(shù),將被保存在Handle這個變量中。從操作系統(tǒng)的角度上看,所有的設(shè)備都是一個資源,包括網(wǎng)口、USB接口、PCI設(shè)備等,系統(tǒng)會給所有的設(shè)備做一個排列并給每個設(shè)備一個標(biāo)號來管理這些設(shè)備。第一控制器102得到所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表后,應(yīng)用所述服務(wù)程序通過反射調(diào)用獲取所述應(yīng)用程序的公開接口,并通過所述公開接口將所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給所述應(yīng)用程序。每個應(yīng)用程序包含有一個公開接口 Public void SetDevices (List〈PCIDevice>devices)即應(yīng)用程序的主界面窗體類中的一個公開函數(shù),第一控制器102應(yīng)用所述服務(wù)程序通過反射調(diào)用該應(yīng)用程序的主界面窗體的類名進而調(diào)用該公開接口,調(diào)用該公開接口實現(xiàn)了分發(fā)和共享描述當(dāng)前所有PCI硬件設(shè)備的數(shù)據(jù)結(jié)構(gòu)列表,調(diào)用完成后通過該類型動態(tài)生成應(yīng)用程序界面對象并顯示,服務(wù)程序通過該公開接口將PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給該應(yīng)用程序,同樣的所有對PCI硬件進行操作的應(yīng)用程序均通過各自的公開接口得到服務(wù)程序發(fā)布的PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表。

所有的應(yīng)用程序獲得的是同一個數(shù)據(jù)結(jié)構(gòu)列表,也就是說,所有的應(yīng)用程序內(nèi)部包括的一個PCI硬件列表的變量得到的是相同的內(nèi)容,指向的是同一個內(nèi)存空間,實現(xiàn)了 所有的應(yīng)用程序分享同一個數(shù)據(jù)結(jié)構(gòu)列表,能夠分別對其目標(biāo)PCI硬件進行兼容操作。服務(wù)程序?qū)λ鯬CI硬件進行掃描并打開后,操作系統(tǒng)分配給PCI硬件相應(yīng)的板卡特定的資源號,并創(chuàng)建通道,此時應(yīng)用系統(tǒng)通過該數(shù)據(jù)結(jié)構(gòu)中的句柄Handle訪問所述PCI硬件板卡,比如,當(dāng)應(yīng)用程序調(diào)用讀寫函數(shù)前往該Handle代表的設(shè)備進行讀寫操作時,相當(dāng)于通過該通道實現(xiàn)了對具體設(shè)備硬件設(shè)備的操作。某一應(yīng)用程序?qū)CI硬件進行操作時,目標(biāo)硬件可能為一個,也可為多個。參見圖10,示出了本發(fā)明提供的一種PCI硬件應(yīng)用程序兼容運行的裝置實施例的另一種結(jié)構(gòu)示意圖,在圖10中還包括第二控制器103。所述第二控制器103用于當(dāng)所述檢測器101檢測得到所述應(yīng)用程序的個數(shù)為一個時,啟動所述應(yīng)用程序,掃描并打開所述PCI硬件,獲得所述描述當(dāng)前所有PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,應(yīng)用所述應(yīng)用程序?qū)λ瞿繕?biāo)PCI硬件進行操作。當(dāng)所述檢測器101檢測得到對PCI硬件進行操作的應(yīng)用程序的個數(shù)為一個時,第二控制器103啟動所述應(yīng)用程序,應(yīng)用所述應(yīng)用程序直接對PCI硬件進行操作。第二控制器103應(yīng)用所述應(yīng)用程序進行掃描的目的是獲得所有PCI插槽上的PCI設(shè)備的信息,即在哪些插槽上有設(shè)備,哪些插槽上沒有設(shè)備,這些PCI設(shè)備的信息包括Vendor ID,Device ID和Slot等。所述應(yīng)用程序?qū)CI硬件進行掃描,掃描得到PCI設(shè)備的信息后,應(yīng)用程序并不能只采用這些設(shè)備信息對所述PCI設(shè)備進行操作,需要后續(xù)的打開步驟。第二控制器103應(yīng)用所述應(yīng)用程序進行打開的目的是讓代表一個具體硬件設(shè)備的PCI Device數(shù)據(jù)結(jié)構(gòu)類中的句柄Handle由Null變?yōu)橐粋€具體的整型數(shù)。其本質(zhì)是操作系統(tǒng)給這個設(shè)備分配了一個代表該設(shè)備資源的標(biāo)號,相應(yīng)的創(chuàng)建一個通道,比如,當(dāng)應(yīng)用程序調(diào)用讀寫函數(shù)前往該Handle代表的設(shè)備后進行讀寫操作時,相當(dāng)于通過該通道實現(xiàn)了對具體設(shè)備硬件設(shè)備的操作。即對所述PCI硬件進行打開,操作系統(tǒng)給PCI硬件相應(yīng)的板卡分配資源號并創(chuàng)建對所述板卡進行操作的操作通道,此時應(yīng)用系統(tǒng)通過該句柄Handle訪問所述PCI硬件中相應(yīng)的板卡。上述的代表該設(shè)備資源的標(biāo)號就是一個特殊的整型數(shù),將被保存在Handle這個變量中。從操作系統(tǒng)的角度上看,所有的設(shè)備都是一個資源,包括網(wǎng)口、USB接口、PCI設(shè)備等,系統(tǒng)會給所有的設(shè)備做一個排列并給每個設(shè)備一個標(biāo)號來管理這些設(shè)備。在PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表中包含了全部PCI硬件的信息,應(yīng)用程序?qū)CI硬件中的某目標(biāo)PCI硬件進行操作,在所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表中獲取目標(biāo)PIC硬件的信息,該信息中包含有句柄Handle,對所述PCI硬件進行打開,操作系統(tǒng)分配給PCI硬件相應(yīng)的板卡特定的資源號并創(chuàng)建對所述板卡進行操作的操作通道,獲得到所述Handle就是得到了通往PCI硬件的操作通道。某一應(yīng)用程序?qū)CI硬件進行操作時,目標(biāo)硬件可能為一個,也可為多個。在本發(fā)明提供的實施例中,是以PCI硬件為例進行的解釋說明,在實際應(yīng)用中,該 硬件應(yīng)用程序兼容運行的方法和裝置也可應(yīng)用在其他與PCI硬件相類似的硬件領(lǐng)域。在本發(fā)明中提供的一種PCI硬件應(yīng)用程序兼容運行的方法和裝置,是將只有一個應(yīng)用程序?qū)CI硬件進行操作和多個應(yīng)用程序?qū)CI硬件進行操作的情況分開的,但不限定于此,在實際實施中,也可以將只有一個應(yīng)用程序?qū)CI硬件進行操作的情況合并到多個的情況中,只有一個應(yīng)用程序或多個應(yīng)用程序?qū)CI硬件進行操作時,都是先由服務(wù)程序掃描獲取描述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,再通過反射調(diào)用將該數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給應(yīng)用程序,簡化了應(yīng)用程序。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種PCI硬件應(yīng)用程序兼容運行的方法,其特征在于,所述方法應(yīng)用于當(dāng)調(diào)用應(yīng)用程序?qū)CI硬件進行操作時,包括 檢測當(dāng)前調(diào)用的對PCI硬件進行操作的應(yīng)用程序的個數(shù); 當(dāng)所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件,獲取描述所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給當(dāng)前對所述PCI硬件進行操作的所有的應(yīng)用程序,使所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作。
2.根據(jù)權(quán)利要求I所述的PCI硬件應(yīng)用程序兼容運行的方法,其特征在于,還包括 當(dāng)所述應(yīng)用程序的個數(shù)為一個時,啟動所述應(yīng)用程序,掃描并打開所述PCI硬件,獲取所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表; 依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,應(yīng)用所述應(yīng)用程序?qū)λ瞿繕?biāo)PCI硬件進行操作。
3.根據(jù)權(quán)利要求I或2所述的PCI硬件應(yīng)用程序兼容運行的方法,其特征在于,所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)包含的成員變量包括 表征硬件板卡資源信息的句柄Handle ; 表征所述硬件板卡的身份信息的ID ; 表征所述硬件板卡在PCI插槽上的位置的插槽Slot。
4.根據(jù)權(quán)利要求3所述的PCI硬件應(yīng)用程序兼容運行的方法,其特征在于,當(dāng)所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件包括 啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序?qū)λ鯬CI硬件進行掃描,依據(jù)掃描結(jié)果對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的ID信息和Slot信息進行更新; 應(yīng)用所述服務(wù)程序打開所述PCI硬件,對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的Handle信息進行更新,并得到所述PCI硬件的操作通道。
5.根據(jù)權(quán)利要求3所述的PCI硬件應(yīng)用程序兼容運行的方法,其特征在于,當(dāng)所述應(yīng)用程序的個數(shù)為一個時,啟動所述應(yīng)用程序,掃描并打開所述PCI硬件包括 啟動所述應(yīng)用程序,應(yīng)用所述應(yīng)用程序?qū)λ鯬CI硬件進行掃描,依據(jù)掃描結(jié)果對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的ID信息和Slot信息進行更新; 應(yīng)用所述應(yīng)用程序打開所述PCI硬件,對所述數(shù)據(jù)結(jié)構(gòu)列表中的每個數(shù)據(jù)結(jié)構(gòu)對應(yīng)的Handle信息進行更新,并得到所述PCI硬件的操作通道。
6.根據(jù)權(quán)利要求I所述的PCI硬件應(yīng)用程序兼容運行的方法,其特征在于,對所述PCI硬件進行操作的應(yīng)用程序在同一時間內(nèi)對應(yīng)的目標(biāo)PCI硬件不同;所述PCI硬件進行操作的應(yīng)用程序?qū)ν荒繕?biāo)PCI硬件的操作為在不同時間分別進行。
7.根據(jù)權(quán)利要求I所述的PCI硬件應(yīng)用程序兼容運行的方法,其特征在于,所述將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給對所述PCI硬件進行操作的所有的應(yīng)用程序包括 應(yīng)用所述服務(wù)程序通過反射調(diào)用獲取所述應(yīng)用程序的公開接口,并通過所述公開接口將所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給所述應(yīng)用程序。
8.根據(jù)權(quán)利要求3所述的PCI硬件應(yīng)用程序兼容運行的方法,其特征在于,所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作包括依據(jù)目標(biāo)PCI硬件的ID信息和Slot信息,應(yīng)用所述應(yīng)用程序獲得所述數(shù)據(jù)結(jié)構(gòu)列表中對應(yīng)的數(shù)據(jù)結(jié)構(gòu); 依據(jù)所述數(shù)據(jù)結(jié)構(gòu)中的Handle信息,應(yīng)用所述應(yīng)用程序?qū)λ瞿繕?biāo)PCI硬件進行操作。
9.一種PCI硬件應(yīng)用程序兼容運行的裝置,其特征在于,所述裝置應(yīng)用于當(dāng)調(diào)用應(yīng)用程序?qū)CI硬件進行操作時,包括 檢測器,用于檢測當(dāng)前調(diào)用的對PCI硬件進行操作的應(yīng)用程序的個數(shù); 第一控制器,用于當(dāng)所述檢測器檢測得到所述應(yīng)用程序的個數(shù)為至少兩個時,啟動預(yù)設(shè)服務(wù)程序,應(yīng)用所述服務(wù)程序掃描并打開所述PCI硬件,獲取所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并將所述數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給當(dāng)前對所述PCI硬件進行操作的所有的應(yīng)用程序,使所述應(yīng)用程序依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,對所述PCI硬件進行操作。
10.根據(jù)權(quán)利要求9所述的PCI硬件應(yīng)用程序兼容運行的裝置,其特征在于,還包括 第二控制器,用于當(dāng)所述檢測器檢測得到所述應(yīng)用程序的個數(shù)為一個時,啟動所述應(yīng)用程序,掃描并打開所述PCI硬件,獲得所述PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并依據(jù)所述數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息,應(yīng)用所述應(yīng)用程序?qū)λ瞿繕?biāo)PCI硬件進行操作。
全文摘要
本發(fā)明提供了一種PCI硬件應(yīng)用程序兼容運行的方法,包括當(dāng)對PCI硬件進行操作的應(yīng)用程序的個數(shù)為至少兩個時,啟動服務(wù)程序,應(yīng)用所述服務(wù)程序得到PCI硬件的數(shù)據(jù)結(jié)構(gòu)列表,并將數(shù)據(jù)結(jié)構(gòu)列表發(fā)布給對PCI硬件進行操作的所有的應(yīng)用程序,使所述應(yīng)用程序通過數(shù)據(jù)結(jié)構(gòu)列表中的目標(biāo)PCI硬件的信息對目標(biāo)PCI硬件進行操作。采用本發(fā)明的提供的一種PCI硬件應(yīng)用程序兼容運行的方法和裝置,解決了當(dāng)多個應(yīng)用程序同時操作PCI硬件時導(dǎo)致的異常,使得各個應(yīng)用程序能夠兼容運行。
文檔編號G06F13/38GK102819443SQ20121027966
公開日2012年12月12日 申請日期2012年8月7日 優(yōu)先權(quán)日2012年8月7日
發(fā)明者劉文良 申請人:北京經(jīng)緯恒潤科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1