版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、有兩種方式可以讓設(shè)備和應(yīng)用程序之間聯(lián)系: 1. 通過為設(shè)備創(chuàng)建的一個(gè)符號(hào)鏈; 2. 通過輸出到一個(gè)接口 WDM 驅(qū)動(dòng)程序建議使用輸出到一個(gè)接口而不推薦使用創(chuàng)建符號(hào)鏈的方法。 這個(gè)接口保證 PDO的安全,也保證安全地創(chuàng)建一個(gè)惟一的、獨(dú)立于語言的訪問設(shè)備的方法。 一個(gè)應(yīng)用程序使用 Win32APIs 來調(diào)用設(shè)備。在某個(gè) Win32 APIs 和設(shè)備對(duì)象的分發(fā)函數(shù)之間存在一個(gè)映射關(guān)系。 獲得對(duì)設(shè)備對(duì)象訪問的第一
2、步就是打開一個(gè)設(shè)備對(duì)象的句柄。 用符號(hào)鏈打開一個(gè)設(shè)備的句柄 用符號(hào)鏈打開一個(gè)設(shè)備的句柄 為了打開一個(gè)設(shè)備,應(yīng)用程序需要使用 CreateFile。如果該設(shè)備有一個(gè)符號(hào)鏈出口,應(yīng)用程序可以用下面這個(gè)例子的形式打開句柄: hDevice = CreateFile(“““““.““OMNIPORT3“, GENERIC_READ | GENERIC_WRITE,FILE_SHARE_READ, NULL, OPEN_EXISTING, FIL
3、E_ATTRIBUTE_NORMAL ,NULL ); 文件路徑名的前綴“““.“”告訴系統(tǒng)本調(diào)用希望打開一個(gè)設(shè)備。這個(gè)設(shè)備必須有一個(gè)符號(hào)鏈,以便應(yīng)用程序能夠打開它。有關(guān)細(xì)節(jié)查看有關(guān) Kdevice 和 CreateLink 的內(nèi)容。在上述調(diào)用中第一個(gè)參數(shù)中前綴后的部分就是這個(gè)符號(hào)鏈的名字。 注意: 注意:CreatFile 中的第一個(gè)參數(shù)不是 中的第一個(gè)參數(shù)不是 Windows 98/2000 中驅(qū)動(dòng)程序 中驅(qū)動(dòng)程序(.sys 文件
4、文件)的路 的路徑。是到設(shè)備對(duì)象的符號(hào)鏈。 徑。是到設(shè)備對(duì)象的符號(hào)鏈。 如果使用 DriverWizard 產(chǎn)生驅(qū)動(dòng)程序, 它通常使用類 KunitizedName 來構(gòu)成設(shè)備的符號(hào)鏈。這意味著符號(hào)鏈名有一個(gè)附加的數(shù)字,通常是 0。例如:如果鏈接名稱的主干是 L“TestDevice”那么在 CreateFile 中的串就該是“““““.““TestDevice0”。 如果應(yīng)用程序需要被覆蓋的 I/O,第六個(gè)參數(shù)(Flags)必須或上
5、FILE_FLAG_OVERLAPPED。使用一個(gè)輸出接口打開句柄 用這種方式打開一個(gè)句柄會(huì)稍微麻煩一些。 DriverWorks 庫提供兩個(gè)助手類來使獲得對(duì)該接口的訪問容易一些,這兩個(gè)類是 CDeviceInterface, 和 CdeviceInterfaceClass。 CdeviceInterfaceClass 類封裝了一個(gè)設(shè)備信息集, 該信息集包含了特殊類中的所有設(shè)備接口信息。 應(yīng)用程序能有用 CdeviceInterface
6、Class 類的一個(gè)實(shí)例來獲得一個(gè)或更多的CdeviceInterface 類的實(shí)例。CdeviceInterface 類是一個(gè)單一設(shè)備接口的抽象。它的成員函數(shù)DevicePath()返回一個(gè)路徑名的指針,該指針可以在 CreateFile 中使用來打開設(shè)備。 下面用一個(gè)小例子來顯示這些類最基本的使用方法: extern GUID TestGuid; HANDLE OpenByInterface( GUID* pClassGuid, D
7、WORD instance, PDWORD pError ) { 以下是一個(gè)最基本的應(yīng)用例子的模板: extern GUID TestGuid; HANDLE OpenByInterface( GUID* pClassGuid, DWORD instance, PDWORD pError ) { CDeviceInterfaceClass DevClass(pClassGuid, pError); if (*pError != ERRO
8、R_SUCCESS) return INVALID_HANDLE_VALUE; CDeviceInterface DevInterface( if (*pError != ERROR_SUCCESS) return INVALID_HANDLE_VALUE; cout << “The device path is “ << DevInterface.DevicePath() << endl; HAND
9、LE hDev; hDev = CreateFile( DevInterface.DevicePath(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (hDev == INVALID_HANDLE_VALUE) *pError = Get
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 驅(qū)動(dòng)程序與應(yīng)用程序的接口
- 基于敏感API調(diào)用的Android應(yīng)用程序動(dòng)態(tài)監(jiān)控.pdf
- 以adhoc方式打包ios應(yīng)用程序
- 驅(qū)動(dòng)及應(yīng)用程序研究與實(shí)現(xiàn).pdf
- 基于需求驅(qū)動(dòng)的企業(yè)應(yīng)用程序演化方法研究.pdf
- android應(yīng)用程序基礎(chǔ)
- 應(yīng)用程序基礎(chǔ)——論文
- 修改應(yīng)用程序外觀
- asus多款平板開啟或關(guān)閉演示版應(yīng)用程序的方式
- windowsphone的應(yīng)用程序認(rèn)證要求
- 導(dǎo)航平臺(tái)wince6.0系統(tǒng)的驅(qū)動(dòng)程序開發(fā)及定位應(yīng)用程序的實(shí)現(xiàn)
- 2創(chuàng)建應(yīng)用程序的過程
- 20.1統(tǒng)計(jì)技術(shù)應(yīng)用程序
- 打包所有的應(yīng)用程序
- autolisp 應(yīng)用程序源代碼
- 程序調(diào)用.txt
- 程序調(diào)用.txt
- gps應(yīng)用程序設(shè)計(jì)
- 程序調(diào)用.txt
- 程序調(diào)用.txt
評(píng)論
0/150
提交評(píng)論