1、流驅動固定有是個函式需要實現
***_init
***_deinit
***_open
***_close
***_read
***_write
***_seek
***_iocontrol
***_powerdown
***_powerup
2、流介面驅動函式介紹:
1)dword
***_init
(lpctstr pcontext, lpcvoid lpvbuscontext);
pcontext:指向乙個字串,包含登錄檔中該流接**動鍵值的路徑
lpvbuscontext:此引數是被處理過的乙個指標資料,由函式activedeviceex 的第四引數lpvparam傳遞而來(若該對應的驅動由activedeviceex
呼叫而載入則lpvbuscontext
被傳遞過來,否則為0)
該函式是驅動掛載後第乙個被執行的。主要負責完成對裝置的初始化操作和驅動的安全性檢查。由activedeviceex通過裝置管理器呼叫。其返回值一般是乙個資料結構指標,作為函式引數傳遞給其他流介面函式。
2)bool
***_deinit
(dword hdevicecontext);
hdevicecontext
:***_init的返回值。
整個驅動中最後執行。用來停止和解除安裝裝置。由deactivatedevice觸發裝置管理器呼叫。成功返回true。
3)dword
***_open
(dword hdevicecontext, dword accesscode , dword sharemode);
hdevicecontext
:***_init
的返回值。
accesscode
:訪問模式標誌,讀、寫或其他。
sharemode
:驅動的共享方式標誌。
開啟裝置,為後面的操作初始化資料就夠,準備相應的資源。應用程式通過
createfile
函式間接呼叫之。返回乙個結構指標,用於區分哪個應用程式呼叫了驅動,這個值還作為引數傳遞給其他介面函式***_read、***_write、***_seek、***_iocontrol。
4)bool
***_close
(dword hopencontext);
hopencontext
:***_open
返回值。
關閉裝置,釋放資源。由
closehandle
函式間接呼叫。 5)
dword
***_read
(dword hopencontext, lpvoid pbuffer, dword count);
hopencontext
:***_open
返回值。
pbuffer
:緩衝區指標,接收資料。
count
:緩衝區長度。 由
readfile
函式間接呼叫,用來讀取裝置上的資料。返回讀取的實際資料位元組數。
6)dword
***_write
(dword hopencontext, lpcvoid pbuffer, dword count);
hopencontext
:***_open
返回值。
pbuffer
:緩衝區指標,接收資料。
count
:緩衝區長度。 由
writefile
函式間接呼叫,把資料寫到裝置上,返回實際寫入的資料數。 7)
bool
***_iocontrol
(dword hopencontext, dword dwcode, pbyte pbufin, dword dwlenin, pbyte pbufout, dword dwlenout, pdword pdwactualout);
hopencontext
:***_open
返回值。
dwcode
:控制命令字。
pdwactualout
:實際輸出資料長度。
用於向裝置傳送命令,應用程式通過
deviceiocontrol
呼叫來實現該功能。要呼叫這個介面還需要在應用層和驅動之間建立一套相同的命令,通過巨集定義
ctl_code(devicetype, function, method, access
來實現。如:
#define ioctl_init_ports / ctl_code(file_device_unknown,0x801,method_buffered,file_any_access)
8)void ***_
powerdown
(dword hdevicecontext);
hdevicecontext
:***_init
的返回值。
負責裝置的上電控制。
9)void ***_
powerup
(dword hdevicecontext);
hdevicecontext
:***_init
的返回值。
負責裝置的斷電控制
10)
dword
ioc_seek
(dword hopencontext, long amount, word type)
hopencontext
:***_open
返回值。
amount
:指標的偏移量。
type
:指標的偏移方式。
將裝置的資料指標指向特定的位置,應用程式通過
setfilepointer
函式間接呼叫。不是所有裝置的屬性上都支援這項功能。
3、函式的執行時間如下
***_init 載入驅動時呼叫
***_deinit 卸裝驅動時呼叫
***_open 開啟驅動createfile時呼叫
***_close 關閉驅動closehandle時呼叫
***_read readfile時呼叫
***_write writefile時呼叫
***_seek setfilepointer時呼叫
***_iocontrol devicecontrol時呼叫
***_powerdown 系統進入休眠時呼叫
***_powerup 系統重新啟動時呼叫
WINCE流驅動介面函式引數詳解
dword init dword dwcontext,lpcvoid lpvbuscontext dwcontext 指向登錄檔的指標,說明流驅動的活動鍵的路徑。lpvbuscontext 作為activedevice的第四個引數傳遞程序對映的指標。返回值 若此函式執行成功,則返回乙個裝置上下文控制...
WinCE流驅動載入的控制
前段時間整理了 wince下除錯串列埠的動態復用 基本實現了除錯串列埠與普通功能串列埠之間的動態切換。其中實現的方法有點欠缺,在重新燒錄或者公升級系統後,導致系統無法正常啟動。這算是個bug。該功能加上才幾天,就陸續有好幾個同事碰到。本來想著使用方便的,沒想到反而增添了一些麻煩。這個問題在實現時曾考...
瀑布流函式
在jquery物件後面新增瀑布流函式 function 其他行 else 其他行 top 每列中的最小值 即最低的那一列 val css 修改高度陣列 最小高度 最小高度 當前子元素高度 arrheight minindex minheight height 查詢高度 最大值 var maxinde...