流驅動函式

2021-06-18 09:53:14 字數 3409 閱讀 9279

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...