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

    Rss & SiteMap

    曙海教育集團論壇 http://www.bjzhda.cn

    曙海教育集團論壇
    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
    [瀏覽完整版]

    標題:WinCE下驅動開發入門記錄(一)

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

             好,先介紹了一些關于流接口驅動的相關知識,這部分在網上還是能夠找到不少資料的,我就不多說,回到我要開發的驅動上,說到底我這個還首先是個USB設備,被識別之后才能將它驅動成一個流設備
            說到USB驅動,就要先介紹一下USB驅動加載過程了。當usb設備接到主機(usb host,因此你的pda必須是能夠作為usb host使用的)上時,系統就會根據它的信息去從注冊表里查找它的驅動相關信息,在HKLM\Drivers\Usb\LoadClients下面會有一些主鍵Group1_ID\Group2_ID\Group3_ID\DeviceID,而DeviceID下面有一個字符串Dll=DriverFile.dll
    注意,其中Group1_ID,Group2_ID,Group3_ID分別表示什么,以及其匹配的優先級別,可以在《WindowsCE 驅動開發指南》一書中USB驅動開發一章去詳細研究。
             如果找到匹配的注冊表信息,系統就會加載DriverFile.dll,否則就會提示用戶輸入一個驅動名稱。
             那么加載dll的時候會有些什么動作呢?驅動程序DLL和普通的DLL是否具備不同的入口點呢?
             先回答第二個問題,答案是否定的,其入口點和普通的dll沒有區別。但是加載的過程就不那么簡單了。你可以理解系統已經作了一些事情,使得你可以用一個普通的dll來作為驅動程序,但是顯然,你必須實現系統所要求的接口函數。
             對于USB驅動程序來說,有這么幾個接口函數是必須實現且導出的:
    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驅動相關的結構、函數接口,包括注釋
    共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

    Copyright © 2000 - 2009 曙海教育集團
    Powered By 曙海教育集團 Version 2.2
    Processed in .01563 s, 2 queries.
    主站蜘蛛池模板: 最新亚洲人成网站在线观看| 黑人巨大精品大战白人美女| 日本影片和韩国影片网站推荐| 人善交video欧美| 老鸭窝在线观看视频的网址| 国产精品自产拍在线观看花钱看 | 在线免费视频a| 久久中文字幕人妻丝袜| 村上凉子丰满禁断五十路| 伊人影院中文字幕| 精品国产午夜福利在线观看| 国产成人无码AⅤ片在线观看| a级国产乱理伦片| 岛国大片免费观看| 久久综合九色综合欧美就去吻| 欧美妇乱xxxxx视频| 免费福利在线观看| 美女内射无套日韩免费播放| 国产李美静大战黑人| 99热久久这里只精品国产www| 尤果圈3.2.6破解版| 久久天天躁狠狠躁夜夜躁2020| 桃子视频观看免费完整| 亚洲色av性色在线观无码| 精品一区二区三区AV天堂| 国产人成视频在线视频| 麻豆视频免费看| 国产精品高清一区二区三区不卡 | 中文字幕亚洲日韩无线码| 日本人强jizzjizz| 亚洲乱码一区二区三区在线观看| 毛片免费全部免费观看| 午夜三级国产精品理论三级| 老师的奶好大摸着好爽| 国产成人女人视频在线观看| 91嫩草视频在线观看| 在线无码VA中文字幕无码 | 狠狠色欧美亚洲狠狠色www| 回复术士的重来人生第一季樱花动漫| 韩国v欧美v亚洲v日本v| 国产精品亚欧美一区二区三区|