Hid接口到pc/sc接口轉換方法
2023-04-23 03:15:11 1
專利名稱:Hid接口到pc/sc接口轉換方法
技術領域:
本發明涉及一種在Windows平臺下進行應用程式開發接口 (API)轉換的方法,主要是實現HID開發接口到PC/SC開發接口的轉換。使開發人員可以直接利用PC/SC接口對HID接口的讀卡器/USB KEY設備進行開發,從而實現用標準接口操縱HID接口的讀卡器/USB KEY設備。當系統中存在HID接口的讀卡器/USB KEY設備時,該方法會自動在系統中添加對應的PC/SC設備接口名字,利用該PC/SC設備接口名字就可以直接訪問對應的HID接口的讀卡器/ USB KEY設備。
背景技術:
目前,智慧卡讀卡器/(USBKEY)在計算機安全領i或,尤其是身份識別方面的應用已經非常普遍。為了應對這個需求,Windows平臺專門集成了對讀卡器設備的支持,Windows提供了一套標準的PC/SC開發接口。只要用戶安裝了讀卡器設備和標準的讀卡器設備驅動,那麼皆可以憑藉Windows的標準PC/SC接口函數進行讀卡器/ USB KEY的訪問(Windows的PC/SC接口會自動和系統中存在的U S B讀卡器/ USB KEY設備驅動進行交互)。用戶利用這套接口開發的應用程式是獨立於具體硬體和廠商的,這就給最終用戶帶來了極大的方便。但是讀卡器設備不是一種標準設備,每個廠商為了提供給用戶讀卡器功能服務都需要另外為用戶提供一套讀卡器的設備驅動,這個設備驅動的功能主要就是操控廠商自己的讀卡器設備和Windows的PC/SC接口進行數據交互以實現智慧卡操作。這種模式目前是比較普遍的。
這種模式目前存在以下幾個使所有廠商都比較頭痛的普遍問題
1. 驅動程序籤名。驅動程序需要經過微軟的數字籤名,這是一筆不小的開銷,而且每次升級都需要重新進行數字籤名。
2. 驅動程序安裝。客戶端的驅動程序安裝是一個比較麻煩的過程,尤其對於那些普通用戶來說,更是如此,往往因為用戶使用環境的差異造成安裝時出現各種異常。
3. 設備異常處理。需要解決讀卡器在操作過程中移除時導致的系統藍屏問題。需要處理設備的電源和PNP信息。
4. 不同廠商的驅動程序的相互兼容性問題。目前市場上存在著多種品牌的智慧卡讀卡器,這些不同的智慧卡讀卡器都使用著各個廠商自己開發的驅動。進行卡片發放和集中認證的單位和個人,如發卡中心,身份識別部門,安全檢査部門等。因為基於一些市場,安全和技術等方面的考慮這些部門有時侯會採用不同的讀卡器,這樣一來,這些客戶勢必要安裝不同的驅動。這些驅動的安裝本身就是一個比較麻煩的過程,由於不同得客戶使用的環境差別很大,因此不同廠家開發的驅動常常會存在不同程度的相互影響,這就給客戶的R常維護帶來了極大的麻煩。目前來講這是一個普遍令客戶和廠商比較頭痛的問題。
針對上述這些情況,市場上出現了一些"無驅型"的智慧卡讀卡器/(USB KEY)。這些智慧卡讀卡器使用了Windows系統自己攜帶的HID驅動,這樣就免去了客戶安裝和維護驅動遇到的麻煩,也避免了不同廠家的驅動程序相互衝突的問題。極大地簡化了用戶的維護負擔。但是由於這種讀卡器使用了HID設備驅動,因此Windows作業系統提供的標準PC/SC接口無法和這種設備進行交互(Windows的PC/SC接口只會和系統中存在的讀卡器設備驅動進行交互,Windows作業系統專門提供的HID開發接口才可以操縱HID設備)。也就是說上層應用只能通過HID接口來操作這種智慧卡讀卡器/(USB KEY),而這一套接口跟本不是用於智慧卡的操作接口,大多數的智慧卡/(USB KEY)應用開發人員跟本不熟悉這一套接口,這就給丌發和應用帶來了一些不便。提供這種智慧卡讀卡器/(USB KEY)的廠商為了彌補這個不足,不得不提供相應的中間件,這些中間件給用戶提供"仿PC/SC"接口中間件向下利用HID接口來操縱真實的讀卡器,向上提供一些類似於標準PC/SC接口得私有接口。但是這種解決方案同時帶來了新
的問題兼容性和通用性。不同的廠商提供的中間件實現的方法差別極大,他們提供的"仿
PC/SC接口"和真實的PC/SC接口的差別程度也不一樣。這樣一來客戶開發的同一個智慧卡讀卡器/(USB KEY)應用程式可能無法完全應用到不同廠商的這種"無驅型"的智慧卡讀卡器/(USB KEY)上。同時這些中間件的穩定程度也極大的影響著應用程式的穩定性。
發明內容
為了克服現有的USB無驅讀卡器/USB KEY的不足,本發明提供一種HID接口到PC/SC接口轉換器。這種HID接口到PC/SC接口轉換器可以直接使用Windows作業系統提供的HID設備驅動來操縱HID接口的USB讀卡器/(USB KEY);同時它又可以和系統的PC/SC接口管理器進行交互,從而使終端用戶可以使用標準的PC/SC開發接口來操縱HID接口的USB讀卡器/(USBKEY)。以保證終端用戶的開發經驗、已開發模塊和庫函數可以得到充分利用。
本發明解決其技術問題所採用的技術方案是
向Windows作業系統註冊並啟用一個系統核心服務,這個核心服務向上負責給用戶提供PC/SC接口,向下負責操縱真實的HID接口的USB讀卡器/USB KEY設備。核心服務向Windows系統註冊一個HID設備狀態監控接口 ,這個接口負責監控並查詢系統中的HID設備的狀態。如果發現一個存在的目標HID設備,那麼就激活註冊的相應的PC/SC接口供應用程式訪問;如果發現一個刈除的目標HID設備,那麼就禁止註冊的相應的PC/SC接口以通知應用程式該讀卡器/KEY不可訪問.核心服務接受從PC/SC接口發送來的數據請求並按照HID接口規範把數據轉發給相應得HID設備,然後把HID設備返回的數據按照7 8 1 6協議通過PC/SC接口返回給應用程式。從而達到利用標準的PC/SC訪問HID接口 USB讀卡器/ USBKEY的目的。
這個方案中提供的PC/SC接口是真實的PC/SC接口,因此原有的PC/SC接口的程序和庫函數都可以直接使用該接口而不用作任何改動。同時該方案不需要更改系統的任何文件或者接口,從而可以最大限度的保證兼容性和穩定性。
這些特點優於市場上已有的任何"仿PC/SC接口"的產品。
由於採用了以上技術方案,使本發明具有
1:可以讓用戶在使用無驅USB讀卡器/USB KEY時既可以享用無驅設備帶來的便捷、簡單和易於維護,又可以使用標準的PC/SC開發接口來操控這些設備,原有的開發經驗和軟體資源可以得到完全的充分利用而不會額外增加成本。
2:有助於開發模塊的標準化和通用性。以前利用標準PC/SC接口庫開發成功的智慧卡應用程式可以直接使用無驅USB讀卡器/USB KEY而無需做任何更改,新開發的應用程式使用的是標準的PC/SC接口庫,也可以方便的應用在其他PC/SC接口的設備上。
3:提供了極大的兼容性和通用性,客戶免除了驅動安裝和維護的煩惱,同時又可以利用標準的PC/SC接口像以前一樣操縱這個U S B讀卡器/ USB KEY。上層的應用程式無需作任何改動就能兼容現有的新設備,極大的縮短了客戶的研發周期並節省了大量的研發開銷。
4:有助於客戶採用不同的硬體設備來增加系統的穩定和健壯性,無驅的USB讀卡器/USBKEY易於安裝,無需維護,同時標準的開發接口又可以使用戶實現上層軟體的統一。因此用戶可以根據實際情況來採用不同的設備而不用擔心系統維護和穩定的問題。
下面結合附圖和實施方式對本發明進一歩說明。 圖l是本實用新型的軟體架構圖。 圖2是接口轉換核心服務的工作原理圖。 圖3是內核服務流程圖。 圖4是HID設備監控流程圖。 圖5是PC/SC接口數據處理流程圖。
圖中l.智慧卡應用程式,2 .Windows PC/SC接口 API , 3.NTDLL.DLL, 4.接口轉換核 心服務,5.Windows系統HID設備驅動,6 . HID接口的讀卡器/ USB KEY。 7.註冊的PC/S C接口。 8.核心服務程序。9.HID設備狀態監控器。
具體實施例方式
圖1中,智慧卡應用程式1通過P C / S C接口 A P I 2進行數據交互,N T D L L . D L L 3將該交互請求傳送給接口轉換核心服務4 ,接口轉換核心服務4把數據通過H I D設 備驅動5轉發到H I D設備6。從H I D設備6返回的數據經由H I D設備驅動5返回到接 口轉換核心服務4,接口轉換核心服務4再把數據交給XTDLL. DLL 3,最終數據經 過P C / S C接口AP I返回到應用程式。
圖2中,向Windows作業系統註冊並啟用一個系統核心服務8 ,接下來 這個核心服務8向Windows系統註冊 一 個HID設備狀態監控器9 ,這個監控 器9負責監控並查詢系統中的HID設備6的狀態。如果發現一個存在的目標 HID設備6 ,那麼就向Windows系統的PC/SC接口管理器註冊 一 個PC/SC設 備接口 7 ,這個註冊的設備接口 7會自動和系統的PC/SC接口開發庫進行交 互以供應用程式訪問;如果發現一個刈除的目標HID設備6 ,那麼就取消(反 註冊)我們註冊的相應的PC/SC設備接口 7以通知應用程式該讀卡器/KEY不 存在。
在註冊的PC/SC接口 7內,核心服務接受這些接口的數據請求並通過設 備間的相互操作經由Windows系統HID設備驅動5將數據請求發送到目的HID設備6 , 等待讀卡器的處理結果,並將返回的數據結果傳送給相應的PC/SC接口 7 。
在註冊的HID接口設備狀態監控接口 9內,核心服務8負責使用特殊的 數據格式和特定的指令和監控到的HID設備6進行特定次序的指令交互。如 果返回的結果和預期的結果相同,那麼該HID設備6就是一個目標HID。根 據這個設備的狀態來註冊或者反註冊相應的PC/SC接口 7 。應用程式1根據 相應接口的狀態就可以知道設備是否可以訪問。
權利要求
1.一種進行HID接口到PC/SC接口轉換的核心服務程序,在核心服務程序中註冊了PC/SC接口和HID接口監控器。其特徵是一個普通的系統核心服務程序,當該核心服務程序運行時,系統當中的目標HID設備可以被轉換成USB讀卡器/USB KEY設備。該服務程序對於應用程式來講是完全透明的,應用程式是直接通過PC/SC接口來訪問這些HID設備,不會意識到服務程序的存在。服務程序不更改或者替換系統中現有的任何文件.
2 .根據權利要求1所述的核心服務程序,其特徵是 一個運行在核心層的服務程序,可以將HID接口的讀卡器和USB Key設備轉換為PC/SC接口的讀卡器和USB Key設備。
3 .根據權利要求1所述的核心服務程序,其特徵是不改變系統中原有的設備架構,系統中的所有HID設備仍然使用系統自帶的HID設備驅動。不替換系統中任何驅動程序或者 文件,原有的HID接口仍然可以訪問對應的設備。
4.根據權利要求1所述的核心服務程序,其特徵是提供的是真正的標準PC/SC接口。應 用程序可以直接使用PC/SC接口在運行該服務的系統上訪問指定的HID設備。原來利用 標準PC/SC接口開發的應用程式和庫函數無序任何更改就可以直接在運行該服務的系統 上訪問HID設備。
5 .根據權利要求1所述的核心服務程序,其特徵是不提供額外的任何形式的庫函數,應用程式不會意識到該服務程序的存在,應用程式直接使用的仍然是系統的標準PC/SC接 口庫函數。
6 .根據權利要求1所述的核心服務程序,其特徵是可以動態的加載,完全運行在系統核心層。所有的數據轉換和處理都是在核心層完成,不需要其他的支持程序。
7.根據權利要求l所述的核心服務程序,其特徵是當指定的HID接口的讀卡器和USBKey 存在於系統中時,就會有對應的PC/SC設備接口名字和該設備對應供應用程式訪問,當 設備不存在時,該PC/SC設備接口名字自動消失。
全文摘要
本發明提供了一種Windows平臺下實現HID開發接口到PC/SC開發接口轉換的方法。此發明是一個運行在Windows系統核心層的核心服務程序。該服務程序向系統註冊HID設備狀態監控接口,當有目的HID設備存在時,註冊PC/SC設備接口名字和該HID設備對應,當目的HID設備被移除時,反註冊對應的PC/SC設備接口名字;該服務程序同時負責PC/SC接口和HID設備之間的數據交互,使應用程式可以利用標準的PC/SC接口直接操控HID接口的USB讀卡器/USB KEY;該服務程序不改變系統原有的設備驅動架構,不替換任何現有的文件,原有的HID設備架構和開發接口不受任何影響。該服務程序提供真正的PC/SC接口,和原有的應用程式無縫兼容。
文檔編號G06F9/44GK101639771SQ20081013449
公開日2010年2月3日 申請日期2008年7月30日 優先權日2008年7月30日
發明者(請求不公開姓名) 申請人:許 燕