<dfn id="is4kg"></dfn>
  • <ul id="is4kg"></ul>
  • <abbr id="is4kg"></abbr>
  • <ul id="is4kg"></ul>
    <bdo id="is4kg"></bdo>

    曙海教育集團論壇Win CE 專區(qū)WinCE系統(tǒng)定制與驅(qū)動開發(fā) → WinCE下驅(qū)動開發(fā)入門記錄(一)


      共有7764人關(guān)注過本帖樹形打印

    主題:WinCE下驅(qū)動開發(fā)入門記錄(一)

    美女呀,離線,留言給我吧!
    wangxinxin
      1樓 個性首頁 | 博客 | 信息 | 搜索 | 郵箱 | 主頁 | UC


    加好友 發(fā)短信
    等級:青蜂俠 帖子:1393 積分:14038 威望:0 精華:0 注冊:2010-11-12 11:08:23
    WinCE下驅(qū)動開發(fā)入門記錄(一)  發(fā)帖心情 Post By:2010-11-26 11:11:21

    這兩天時間完全泡在CE的驅(qū)動開發(fā)中,學(xué)習(xí)學(xué)習(xí),感覺就是資料不好找,難入門難上手,象我這樣僅僅只有eVc4的更是沒法調(diào)試沒法跟蹤,困難還是挺多的。學(xué)習(xí)了兩天,現(xiàn)在感覺有那么點意思了,記錄一下與大家分享。
            首先說明一下,我可能仍然是個門外漢,因為以前基本沒做過和硬件相關(guān)的東西,這方面知識缺乏的要命,現(xiàn)在公司要求做個驅(qū)動出來,也只有硬著頭皮上了,學(xué)習(xí)研究了兩天,基本掌握了一些有用的信息,所以認(rèn)為自己入門了,但僅從自己的感覺出發(fā)都可以說我只是窺見了冰山之一角,還有很多很多都不懂。上次的帖子里面介紹了一些當(dāng)時收集到的比較有用的資料,那個PB我也試著下了,下了一兩天沒多少,公司網(wǎng)太破,那個ftp又不支持?jǐn)帱c續(xù)傳,可害苦了我了,一個個的文件包100多M,一掉線就得重來,最后我干脆放棄了。那個弟兄有的,干脆打個包把代碼發(fā)給我好了,謝謝了先。
             好,怎們切入正題。首先介紹一下我的驅(qū)動目標(biāo),目的是為了使在pda上運行的應(yīng)用程序能夠通過USB口和我們這個外設(shè)通訊,可以發(fā)送指令給外設(shè),也要求從外設(shè)獲取數(shù)據(jù),因此我把它定位在流接口上,這就引出第一個概念,流接口,應(yīng)該說這里所說的流接口是Wince上驅(qū)動的一種,象串口啊這樣的可以用CreateFile打開的都屬于這個范疇。其關(guān)鍵在于1)實現(xiàn)xxx_系列的函數(shù)2)注冊表中定義Prefix和Dll。其中xxx就是注冊表中Prefix的值,比如串口就是“COM”。而注冊表中的DLL就是你的驅(qū)動程序dll(wince下的驅(qū)動就是一個dll),加載驅(qū)動的時候,會到你的dll中去找xxx_系列的函數(shù),所以你的dll一定要導(dǎo)出這些函數(shù)符號。
    XXX_Init
    XXX_Deinit
    XXX_Open
    XXX_Close
    XXX_Read
    XXX_Write
    XXX_Seek
    XXX_IOControl
    XXX_PowerDown
    XXX_PowerUp
    經(jīng)過測試,其中前六個是必須實現(xiàn)且導(dǎo)出的,否則是不能夠成功加載的。

             好,先介紹了一些關(guān)于流接口驅(qū)動的相關(guān)知識,這部分在網(wǎng)上還是能夠找到不少資料的,我就不多說,回到我要開發(fā)的驅(qū)動上,說到底我這個還首先是個USB設(shè)備,被識別之后才能將它驅(qū)動成一個流設(shè)備。
            說到USB驅(qū)動,就要先介紹一下USB驅(qū)動加載過程了。當(dāng)usb設(shè)備接到主機(usb host,因此你的pda必須是能夠作為usb host使用的)上時,系統(tǒng)就會根據(jù)它的信息去從注冊表里查找它的驅(qū)動相關(guān)信息,在HKLM\Drivers\Usb\LoadClients下面會有一些主鍵Group1_ID\Group2_ID\Group3_ID\DeviceID,而DeviceID下面有一個字符串Dll=DriverFile.dll
    注意,其中Group1_ID,Group2_ID,Group3_ID分別表示什么,以及其匹配的優(yōu)先級別,可以在《WindowsCE 驅(qū)動開發(fā)指南》一書中USB驅(qū)動開發(fā)一章去詳細(xì)研究。
             如果找到匹配的注冊表信息,系統(tǒng)就會加載DriverFile.dll,否則就會提示用戶輸入一個驅(qū)動名稱。
             那么加載dll的時候會有些什么動作呢?驅(qū)動程序DLL和普通的DLL是否具備不同的入口點呢?
             先回答第二個問題,答案是否定的,其入口點和普通的dll沒有區(qū)別。但是加載的過程就不那么簡單了。你可以理解系統(tǒng)已經(jīng)作了一些事情,使得你可以用一個普通的dll來作為驅(qū)動程序,但是顯然,你必須實現(xiàn)系統(tǒng)所要求的接口函數(shù)。
             對于USB驅(qū)動程序來說,有這么幾個接口函數(shù)是必須實現(xiàn)且導(dǎo)出的:
    BOOL USBDeviceAttach(USB_HANDLE hDevice,
                                        LPCUSB_FUNCS lpUsbFuncs, 
                                        LPCUSB_INTERFACE lpInterface,
                                        LPCWSTR szUniqueDriverId, 
                                        LPBOOL fAcceptControl,
                                        LPCUSB_DRIVER_SETTINGS lpDriverSettings,
                                         DWORD dwUnused);
    BOOL USBInstallDriver(LPCWSTR szDriverLibFile);
    BOOL USBUnInstallDriver();
              建議大家先讀一下sdk的include目錄下的usbdi.h頭文件,這里面定義了很多usb驅(qū)動相關(guān)的結(jié)構(gòu)、函數(shù)接口,包括注釋

    支持(0中立(0反對(0單帖管理 | 引用 | 回復(fù) 回到頂部

    返回版面帖子列表

    WinCE下驅(qū)動開發(fā)入門記錄(一)








    簽名
    主站蜘蛛池模板: 成人毛片免费播放| 波多野结衣女女互慰| 国产资源中文字幕| 丰满年轻的继坶| 最近中文字幕完整在线电影| 免费观看一级毛片| 色妞www精品视频| 国产精品亚洲片在线观看不卡| 中国精品一级毛片免费播放| 日韩AV无码久久精品免费| 亚洲第一页在线观看| 福利一区二区在线| 国产免费午夜a无码v视频| 8888四色奇米在线观看免费看| 女人18片免费视频网站| 久久亚洲国产精品五月天婷 | 久久中文网中文字幕| 最新69国产成人精品免费视频动漫 | 成人看的午夜免费毛片| 亚洲va久久久噜噜噜久久天堂 | 欧美aaaaaa级爽激情会所| 免费大黄网站在线观| 综合色在线观看| 国产婷婷综合在线视频中| 91最新高端约会系列178| 大学生毛片a左线播放| 久久99国产精品久久99果冻传媒 | 免费中韩高清无专码区2021| 美国式禁忌芭芭拉| 国产性生大片免费观看性| 91制片厂制作传媒免费版樱花| 大美女啪啪污污网站| 中文在线免费观看| 探花视频在线看视频| 乱人伦精品视频在线观看| 欧美va亚洲va在线观看| 亚洲综合在线视频| 渣男渣女抹胸渣男渣女app| 后入内射国产一区二区| 老司机福利深夜亚洲入口| 国产成人v爽在线免播放观看|