国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
我的第一個(gè)WinCE驅(qū)動(dòng)--流式驅(qū)動(dòng)【轉(zhuǎn)】

轉(zhuǎn)做WinCE驅(qū)動(dòng)已經(jīng)有兩個(gè)月了,卻沒有做過一個(gè)真正的WinCE平臺(tái)下的驅(qū)動(dòng),心里都有些急了,很想嘗試下,好盡快融入WinCE驅(qū)動(dòng)開發(fā)這個(gè)團(tuán)隊(duì)。

頭兒也很理解,給了俺個(gè)簡(jiǎn)單的,可以說是非常簡(jiǎn)單的任務(wù),好讓俺找找入門的感覺,就是做一個(gè)FM的驅(qū)動(dòng)。

由于WinCE下的驅(qū)動(dòng)大多是基于流接口的,所以偶也采用了流接口,做比較起來簡(jiǎn)單,呵呵

說白了,流接口就是實(shí)現(xiàn)以下幾個(gè)接口:

BOOL WINAPI DllMain(HANDLE hInstDll, DWORD dwReason, LPVOID lpvReserved);

DWORD XXX_Init(LPCTSTR pContext, LPCVOID lpvBusContext);

BOOL XXX_Deinit(DWORD hDeviceContext);

DWORD XXX_Open(DWORD hDeviceContext, DWORD AccessCode, DWORD ShareMode);

BOOL XXX_Close(DWORD hOpenContext);

BOOL XXX_PowerUp(DWORD hDeviceContext); BOOL XXX_PowerDown(DWORD hDeviceContext);

BOOL XXX_PowerDown(DWORD hDeviceContext);

DWORD XXX_Read(DWORD hOpenContext, LPVOID pBuffer, DWORD Count);

DWORD XXX_Write(DWORD hOpenContext, LPCVOID pBuffer, DWORD Count);

DWORD XXX_Seek(DWORD hOpenContext, long Amount, WORD Type);

BOOL XXX_IOControl(DWORD hOpenContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn,
              PBYTE pBufOut, DWORD dwLenOut,
              PDWORD pdwActualOut);

XXX是任意的大寫字符串(只能是三個(gè)字符,偶剛開始用的FM,后面回出問題),且保證與注冊(cè)表Prefix項(xiàng)后的一樣哦

把以上接口給實(shí)現(xiàn)了,接下來就是弄注冊(cè)表咯

在注冊(cè)表中添加如下項(xiàng)目。(一般放在Platform.reg)
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\DevName]
"Prefix"="XXX"
"Dll"="MyDev.Dll"
"Order"=dword:1


然后在BIB文件中添加項(xiàng)目,將所用到的文件加入BIN文件(一般放在Platform.bib)。
    MyDev.dll     $(_FLATRELEASEDIR)\MyDev.dll     NK SH

注:
DevName為任意與其它項(xiàng)目不重名的字符串.

在platform/你的平臺(tái)(如:smdk2410)/drivers 下新建一個(gè)目錄(偶的是FM),然后在drivers目錄中的dirs文件中加入以你剛新建的目錄名。
    在剛新建的目錄下,新建你的C源代碼文件,在其中實(shí)現(xiàn)上面所述的函數(shù),及其功能。新建名稱分別為sources, makefile, mydev.def的文件。
其內(nèi)容如下:
    makefile: 只需要這樣一行
!INCLUDE $(_MAKEENVROOT)\makefile.def

mydriver.def文件定義需要輸出的函數(shù),這些函數(shù)能夠被其它代碼用動(dòng)態(tài)加載的方法調(diào)用。格式:

LIBRARY     MyDev(這個(gè)字符串要和將要生成的動(dòng)態(tài)庫(kù)的文件名一樣)

EXPORTS
    XXX_Init
    XXX_Deinit
    XXX_Open
    XXX_Close
    XXX_PowerOff
    XXX_PowerDown
    XXX_Read
    XXX_Write
    XXX_Seek
    XXX_IOControl

Sources:這個(gè)文件很重要,內(nèi)容也多,最基本的一個(gè)文件該有如下內(nèi)容。

TARGETNAME=MyDev(指定要生成的動(dòng)態(tài)庫(kù)的名稱)
TARGETTYPE=DYNLINK(指定要生成的是一個(gè)動(dòng)態(tài)庫(kù))

(下面兩項(xiàng)指定需要與哪些動(dòng)態(tài)庫(kù)鏈接,一般要第一項(xiàng)就足夠了)
TARGETLIBS=$(_COMMONSDKROOT)\lib\$(_CPUINDPATH)\coredll.lib \
              $(_COMMONOAKROOT)\lib\$(_CPUINDPATH)\ceddk.lib

DEFFILE=MyDev.def (指定def文件)

DLLENTRY=DllEntry(指定動(dòng)態(tài)庫(kù)的入口函數(shù))

SOURCES=(請(qǐng)?jiān)谶@寫上你所有源文件的名字,它們將會(huì)被編譯)

一個(gè)流驅(qū)動(dòng)就大功告成咯~~~~~~

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
基于WINCE6.0的nandflash驅(qū)動(dòng)(基于K9F1G08U0B) - LoongE...
怎樣將一個(gè)驅(qū)動(dòng)加入WINCE中 - WINCE - sparkle-cliz
如何把一個(gè)靜態(tài)庫(kù)轉(zhuǎn)化為動(dòng)態(tài)庫(kù) | 學(xué)步園
C 調(diào)用靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)
wince中的定時(shí)關(guān)機(jī)的實(shí)現(xiàn)
WinCE 下串口類
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服