波多在线播放_激情深爱五月_久久欧美精品_成人超碰_国产久_www.pixiv.moe

以文本方式查看主題

-  曙海教育集團論壇  (http://www.022-oo.cn/bbs/index.asp)
--  WinCE系統(tǒng)定制與驅動開發(fā)  (http://www.022-oo.cn/bbs/list.asp?boardid=36)
----  WinCE下驅動開發(fā)入門記錄(一)  (http://www.022-oo.cn/bbs/dispbbs.asp?boardid=36&id=1825)

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

         好,先介紹了一些關于流接口驅動的相關知識,這部分在網(wǎng)上還是能夠找到不少資料的,我就不多說,回到我要開發(fā)的驅動上,說到底我這個還首先是個USB設備,被識別之后才能將它驅動成一個流設備
        說到USB驅動,就要先介紹一下USB驅動加載過程了。當usb設備接到主機(usb host,因此你的pda必須是能夠作為usb host使用的)上時,系統(tǒng)就會根據(jù)它的信息去從注冊表里查找它的驅動相關信息,在HKLM\\Drivers\\Usb\\LoadClients下面會有一些主鍵Group1_ID\\Group2_ID\\Group3_ID\\DeviceID,而DeviceID下面有一個字符串Dll=DriverFile.dll
注意,其中Group1_ID,Group2_ID,Group3_ID分別表示什么,以及其匹配的優(yōu)先級別,可以在《WindowsCE 驅動開發(fā)指南》一書中USB驅動開發(fā)一章去詳細研究。
         如果找到匹配的注冊表信息,系統(tǒng)就會加載DriverFile.dll,否則就會提示用戶輸入一個驅動名稱。
         那么加載dll的時候會有些什么動作呢?驅動程序DLL和普通的DLL是否具備不同的入口點呢?
         先回答第二個問題,答案是否定的,其入口點和普通的dll沒有區(qū)別。但是加載的過程就不那么簡單了。你可以理解系統(tǒng)已經(jīng)作了一些事情,使得你可以用一個普通的dll來作為驅動程序,但是顯然,你必須實現(xiàn)系統(tǒng)所要求的接口函數(shù)。
         對于USB驅動程序來說,有這么幾個接口函數(shù)是必須實現(xiàn)且導出的:
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驅動相關的結構、函數(shù)接口,包括注釋
主站蜘蛛池模板: 成人影院wwwwwwwwwww | 久久99国产精品成人欧美 | 日本在线观看高清不卡免v 国产成人一区二区精品非洲 | 国产精品久久久久一区二区 | 99成人| 欧美一级欧美一级高清 | 日韩国产欧美在线观看一区二区 | 色七七网站| 日韩精品一区二区三区四区视频 | 成人午夜激情 | 欧美日韩性猛交xxxxx免费看 | 免费一区二区三区 | 日本在线观看视频网站 | 免费亚洲视频在线观看 | 久草视频精品 | 欧美一级毛片欧美毛片视频 | 亚洲高清视频在线观看 | 日韩欧美一区二区不卡 | 免费xxxx日本大片在线观看 | 天天摸天天干 | 成人毛片100免费观看 | 亚洲欧美18v中文字幕高清 | 欧洲怡红院 | 91九色论坛 | 精品久久久久久亚洲 | 国产精品美女久久久久久久久久久 | 国产精品欧美一区二区三区 | 日本高清www午色夜黄 | 国产免费一级淫片 | 久久成人国产 | 秋霞日韩久久理论电影 | 亚洲精品欧美一区二区三区 | 美味人妻2中文A片 | 国产伦精品一区二区三区精品视频 | 国产3级在线观看 | 2021国产成人综合亚洲精品 | 欧美老妇69交 | 羞羞电影在线观看 | 国产午夜精品一区二区三区在线观看 | 久草视频在线播放 | 婷婷黄色 |