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