**:
dword ***_init (dword dwcontext,
lpcvoid lpvbuscontext);
dwcontext:指向登錄檔的指標,說明流驅動的活動鍵的路徑。
lpvbuscontext:作為activedevice的第四個引數傳遞程序對映的指標。
返回值:若此函式執行成功,則返回乙個裝置上下文控制代碼。否則返回0。這個控制代碼會被傳送給***_open、***_powerdown、***_powerup和***_deinit函式。
備註:當驅動被系統載入時,呼叫此函式。
bool ***_deinit(dword hdevicecontext);
hdevicecontext:由***_init建立和返回的裝置上下文控制代碼。
返回值:呼叫成功,返回ture;呼叫失敗,返回false。
備註:當驅動被系統解除安裝時,呼叫此函式。
dword ***_open (dword hdevicecontext,
dword accesscode,
dword sharemode);
hdevicecontext:由***_init建立和返回的裝置上下文控制代碼。
accesscode:表示裝置的訪問許可權。訪問許可權是creatfile傳入的讀寫許可權的組合。
sharemode:表示裝置的檔案共享模式。共享模式是creatfile傳入的共享許可權的組合。
返回值:若此函式執行成功,則返回乙個標識所開啟裝置的裝置上下文控制代碼。否則返回0。這個控制代碼會被傳送給***_read、***_write、***_seek和***_iocontrol。
備註:當應用程式呼叫creatfile()函式時,呼叫此函式。
bool ***_close (dword hopencontext);
hopencontext:由***_open建立和返回的裝置上下文控制代碼。
返回值:呼叫成功,返回ture;呼叫失敗,返回false。
備註:當應用程式
呼叫closehandle()函式時,呼叫此函式。
dword ***_read (dword hopencontext,
lpvoid pbuffer,
dword count);
hopencontext:由***_open建立和返回的裝置上下文控制代碼。
pbuffer:指向由裝置讀取的資料緩衝區的指標。
count:表示由應用程式想要從裝置讀入到緩衝區的位元組數。
返回值:返回0表示已經達到檔案結尾,返回-1表示出錯,執行成功返回實際讀入的位元組數。
備註:當應用程式
呼叫readfile()函式時,呼叫此函式。
dword ***_write (dword hopencontext,
lpvoid pbuffer,
dword count);
hopencontext:由***_open建立和返回的裝置上下文控制代碼。
pbuffer:指向準備向裝置寫入的資料緩衝區的指標。
count:表示應用程式想要寫入到裝置緩衝區的位元組數。
返回值:返回-1表示出錯,執行成功返回實際寫入的位元組數。
備註:當應用程式
呼叫writefile()函式時,呼叫此函式。
dword ***_iocontrol (dword hopencontext,
dword dwcode,
pbyte pbufin,
dword dwlenin,
pbyte pbufout,
dword dwlenout,
pdword pdwactualout);
hopencontext:由***_open建立和返回的裝置上下文控制代碼。
dwcode:表示i/o的控制操作碼。這些編碼一般都是是自定義的,一般都會包含在標頭檔案裡。
pbufin:輸入緩衝區的指標。
dwlenin:要寫入的位元組數。
pbufout:輸出緩衝區指標。
dwlenout:輸出的位元組數。
pdwactualout:實際輸出的位元組數。
返回值:呼叫成功,返回true,否則返回false。.
備註:當應用程式
呼叫deviceiocontrol()函式時,呼叫此函式。
void ***_powerdown (dword hdevicecontext);
hdevicecontext:由***_init建立和返回的裝置上下文控制代碼。
備註:當系統停止對裝置供電,或在呼叫deviceiocontrol()
函式時,i/o命令字為ioctl_power_***時呼叫此函式。
void ***_powerup (dword hdevicecontext);
hdevicecontext:由***_init建立和返回的裝置上下文控制代碼。
備註:當系統恢復對裝置供電,或在呼叫deviceiocontrol()
函式時,i/o命令字為ioctl_power_***時呼叫此函式。
dword ***_seek (dword dwopen, long ldelta, word wtype);
WinCE流驅動載入的控制
前段時間整理了 wince下除錯串列埠的動態復用 基本實現了除錯串列埠與普通功能串列埠之間的動態切換。其中實現的方法有點欠缺,在重新燒錄或者公升級系統後,導致系統無法正常啟動。這算是個bug。該功能加上才幾天,就陸續有好幾個同事碰到。本來想著使用方便的,沒想到反而增添了一些麻煩。這個問題在實現時曾考...
WinCE 流介面驅動中裝置控制代碼的傳輸過程
驅動程式是通過裝置控制代碼來控制裝置的,應用程式要控制裝置,也需要獲得裝置控制代碼,然後使用驅動程式體提供的deviceiocontrol介面來控制裝置。那麼應用程式是如何獲得裝置控制代碼的呢?通常流介面驅動程式會使用兩個結構體,驅動上下文結構體和裝置上下文結構體。裝置控制代碼會儲存在裝置上下文結構...
流驅動函式
1 流驅動固定有是個函式需要實現 init deinit open close read write seek iocontrol powerdown powerup 2 流介面驅動函式介紹 1 dword init lpctstr pcontext,lpcvoid lpvbuscontext pc...