新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > USB安全鑰功能擴展與優(yōu)化設計

        USB安全鑰功能擴展與優(yōu)化設計

        作者: 時間:2009-04-09 來源:網絡 收藏

        新增中,主要完成的兩個就是KeyID的讀取和修改,即實現(xiàn)Get_KeyID和Set_KeyID。程序構思大致是:對于Get_KeyID,在接收到PC端發(fā)來的讀取KeyID的中斷后,立即從端點1發(fā)送8字節(jié)的KeyID,這一段沒有什么特別之處;對于Set_KeyID,在接收到信號后,立即轉入Set_KeyID子程序。首先將存儲KeyID的Flash去保護,然后寄存器置位,即在硬件上給Flash一個高電平,接著進行擦除,再將保存于緩沖區(qū)的PC發(fā)來的新KeyID存儲到Flash中。最后,置Flash狀態(tài)寄存器位,給Flash加保護。

        2.4 PC端新增功能的驅動程序

        Windows 98的驅動程序從結構上來說分為兩層:內核層和用戶層。的客戶驅動程序屬于用戶層,而類驅動程序和底層驅動程序則屬于內核層。目前,USB還屬于起步階段,Windows對USB的支持還不夠完善,僅支持內核層。USB開發(fā)人員所要做的,就是開發(fā)客戶驅動程序,直接與類驅動程序打交道。

        HID屬于USB設備類中的一個子類,Windows對它提供了非常強大的支持,尤其是在用戶層提供了Hid.dll,其中包含了用戶層驅動程序與類驅動程序通信需要的各種功能模塊,將它們以API的形式提供給用戶函數(shù)接口。這樣,在編寫客戶驅動程序的時候就可以直接調用這些API函數(shù)來完成諸如IN、OUT等功能,大大降低了編寫驅動程序的難度。

        HID客戶驅動程序訪問HID類驅動程序,由HID類驅動程序完成大多數(shù)工作,而硬件交互由HID小驅動程序HidUsb.sys處理,HID小驅動程序調用USB底層驅動程序USBD.sys訪問設備。

        這里介紹用戶模式的HID客戶驅動程序過程。它主要包括三個方面的工作:

        ?查找所有HID設備;

        ?對于查找到的每一個HID設備,檢查其功能,判斷是否為感興趣的設備;

        ?根據(jù)用戶需要讀取HID輸入Report(Feature)或者寫HID輸出Report(Feature)。

        程序流程如下:

        (1)查找USB鑰設備;

        (2)讀取HID設備功能;

        (3)具體實現(xiàn)Get_KeyID和Set_KeyID子函數(shù);

        BOOL CUsbKey::GetKeyID() //Get_KeyID子程序

        {...

        result=HidD_GetFeature(HidDevice, ReadBuffer,0x09);

        //調用此函數(shù),獲取從端點1發(fā)來的8字節(jié)KeyID;

        for(tmpInt=0;tmpInt

        KeyID_Get[tmpInt]=ReadBuffer[tmpInt+1];

        return TRUE;

        }

        BOOL CUsbKey::SetKeyID() // Set_KeyID子程序

        { int i;

        long result;

        int DataBuffer[16];

        WriteBuffer[0]=0; //寫緩沖區(qū)首字節(jié)清0,作為Set_Feature函數(shù)的要求

        char *c; //獲得對話框內輸入8字節(jié)新KeyID字符串的指針

        c=(char *)(LPCSTR)str_KeyIDSet;

        for (i=0;i

        DataBuffer[i]=*c++;

        …… //此處省略了對輸入的8個字節(jié)的KeyID的16進制檢查代碼

        for(i=0;i8;i++)

        WriteBuffer[i+1]=DataBuffer[2*i]+DataBuffer[2*i+1];

        result=HidD_SetFeature(HidDevice,WriteBuffer, 0x09);

        return TRUE;

        }

        (4)程序運行結果。

        編譯連接之后,最終會生成可執(zhí)行文件KEYDEMO.exe。執(zhí)行它即可SK通信,實現(xiàn)各種功能。


        上一頁 1 2 3 4 下一頁

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 泗洪县| 濉溪县| 策勒县| 通辽市| 乌苏市| 海安县| 石棉县| 永平县| 无棣县| 徐州市| 黄大仙区| 大城县| 古丈县| 丽水市| 积石山| 河源市| 邮箱| 东山县| 广安市| 赞皇县| 金溪县| 石阡县| 奇台县| 沭阳县| 禹城市| 雅安市| 青川县| 金塔县| 渭南市| 永靖县| 赫章县| 澄城县| 麻栗坡县| 贵定县| 三亚市| 桂阳县| 横峰县| 门头沟区| 桃园县| 巴南区| 乌拉特中旗|