在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

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

            USB安全鑰功能擴(kuò)展與優(yōu)化設(shè)計(jì)

            作者: 時(shí)間:2009-04-09 來(lái)源:網(wǎng)絡(luò) 收藏

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

            2.4 PC端新增功能的驅(qū)動(dòng)程序

            Windows 98的驅(qū)動(dòng)程序從結(jié)構(gòu)上來(lái)說(shuō)分為兩層:內(nèi)核層和用戶層。的客戶驅(qū)動(dòng)程序?qū)儆谟脩魧?而類驅(qū)動(dòng)程序和底層驅(qū)動(dòng)程序則屬于內(nèi)核層。目前,USB還屬于起步階段,Windows對(duì)USB的支持還不夠完善,僅支持內(nèi)核層。USB開(kāi)發(fā)人員所要做的,就是開(kāi)發(fā)客戶驅(qū)動(dòng)程序,直接與類驅(qū)動(dòng)程序打交道。

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

            HID客戶驅(qū)動(dòng)程序訪問(wèn)HID類驅(qū)動(dòng)程序,由HID類驅(qū)動(dòng)程序完成大多數(shù)工作,而硬件交互由HID小驅(qū)動(dòng)程序HidUsb.sys處理,HID小驅(qū)動(dòng)程序調(diào)用USB底層驅(qū)動(dòng)程序USBD.sys訪問(wèn)設(shè)備。

            這里介紹用戶模式的HID客戶驅(qū)動(dòng)程序過(guò)程。它主要包括三個(gè)方面的工作:

            ?查找所有HID設(shè)備;

            ?對(duì)于查找到的每一個(gè)HID設(shè)備,檢查其功能,判斷是否為感興趣的設(shè)備;

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

            程序流程如下:

            (1)查找USB鑰設(shè)備;

            (2)讀取HID設(shè)備功能;

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

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

            {...

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

            //調(diào)用此函數(shù),獲取從端點(diǎn)1發(fā)來(lái)的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; //寫(xiě)緩沖區(qū)首字節(jié)清0,作為Set_Feature函數(shù)的要求

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

            c=(char *)(LPCSTR)str_KeyIDSet;

            for (i=0;i

            DataBuffer[i]=*c++;

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

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

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

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

            return TRUE;

            }

            (4)程序運(yùn)行結(jié)果。

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


            上一頁(yè) 1 2 3 4 下一頁(yè)

            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉