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