中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      基于Windows開發(fā)WDM設(shè)備驅(qū)動程序的方法

      時間:2024-08-15 14:33:25 計算機畢業(yè)論文 我要投稿
      • 相關(guān)推薦

      基于Windows2000開發(fā)WDM設(shè)備驅(qū)動程序的方法

      摘 要:本文介紹了Windows 2000 WDM驅(qū)動程序結(jié)構(gòu)及其原理,給出一個驅(qū)動程序的例子

      關(guān)鍵詞: WDM 驅(qū)動程序

      1.概述 引入了全新的WDM (Win32 Driver Model)的驅(qū)動程序架構(gòu),說是新技術(shù),其實早在1997年Microsoft就提出了該項技術(shù)并在Windows 98中得到了充分的應用,換句話說,Windows 98也支持WDM。這樣WDM就成為了一個跨平臺的驅(qū)動程序模型不僅如此WDM驅(qū)動程序還可以在不修改源代碼的情況下經(jīng)過重新編譯后在非Intel平臺上運行。
      2.WDM設(shè)備驅(qū)動程序的特點和原理
      2.1通用驅(qū)動程序
      對基本上一樣的硬件,因為他們共享一個總線或完成類似的任務(wù),設(shè)備驅(qū)動程序可以使用這些標準的驅(qū)動程序功能,使公共總線的共享容易,且更容易寫出新的驅(qū)動程序,總線驅(qū)動程序,如USB、1394,和類驅(qū)動程序。
      (1)Win32程序接口: 可以使用Win32函數(shù)像訪問文件那樣訪問設(shè)備
      CreateFile() 、Closehandle()、ReadFile()、WriteFile()、DeviceIoControl()用于
      發(fā)出特殊請求,可發(fā)送數(shù)據(jù)給驅(qū)動和從驅(qū)動得到數(shù)據(jù),IOCTL代碼可以是預先定義的也可是自己定義的。
      (2)創(chuàng)建設(shè)備 大多數(shù)WDM設(shè)備對象都是在PnP管理器中調(diào)用AddDevice入口時創(chuàng)建,這個PnP 例程在插入新設(shè)備和安裝Inf文件時被調(diào)用,此后一系列的PnP IRP被發(fā)送到驅(qū)動程序,指示設(shè)備應如何啟動和查詢它的功能
      2.2WDM-的工作原理
      WDM是在NT 4.0驅(qū)動程序結(jié)構(gòu)上發(fā)展起來的,所以它與NT 4.0驅(qū)動程序極為相似 ,但是它卻有了本質(zhì)上的提高,比如它支持USB、IEEE 1394、ACPI等全新的硬件標準。 雖然Windows 98與Windows 2000都支持WDM,可是并不意味著Windows 98下的VxD可以在 Windows 2000下運行,而NT下的WDM卻可以在Windows 98下運行。不過原先準備在兩個平臺上同時運行需要編寫兩個截然不同的驅(qū)動程序,而現(xiàn)在只需要編寫一個WDM驅(qū)動程序就 可以了。同NT 4.0驅(qū)動程序一樣,WDM驅(qū)動程序也是分層的,即不同層上的驅(qū)動程序有著不同的優(yōu)先權(quán),而Windows 9x下的VxD則沒有此結(jié)構(gòu)。另外,WDM還引入了功能設(shè)備對象 FDO(functional device object)與物理設(shè)備對象PDO(physical device object)兩 個新概念來描述硬件,一個PDO代表一個真實硬件,在驅(qū)動程序看來則是一個FDO 。 另外值得注意的是,一個硬件只允許有一個PDO,但卻可以擁有多個FDO,而在驅(qū)動程序中我們不是直接操作硬件而是操作相應的PDO與FDO。在Ring-3與Ring-0通訊方面,操作系統(tǒng)為每一個用戶請求打包成一個IRP(IO Request Packet)結(jié)構(gòu),將其發(fā)送至驅(qū)動程序并通過識別IRP中的PDO來識別是發(fā)送給哪一個設(shè)備的。另外,在驅(qū)動程序的加載方面WDM既不靠驅(qū)動程序名稱也不靠一個具有某種特殊意義的ID,而是依靠一個128位的GUID來識別驅(qū)動程序(Windows下許多東西都是靠此進行識別的)。
      2.3 IRP處理
      I/O請求包IRP是驅(qū)動程序操作的中心,IRP是一個內(nèi)核對象,它是預先定義好的數(shù)據(jù)結(jié)構(gòu),帶有一組對它進行操作的I/O管理器例程,I/O管理器接受一個I/O請求,然后將它傳送到合適的驅(qū)動程序棧中的最高驅(qū)動程序之前,分配并處始化一個IRP,每個I/O請求有主功能代碼
      2.4 IRP參數(shù)
      比如一個寫的I/O請求轉(zhuǎn)換成一個IRP時,I/O管理器填寫主要的IRP首部,并構(gòu)造第一個個棧單元,對寫請求來講,首部包含用戶緩沖區(qū)信息,而棧單元則包含寫的具體參數(shù)。如果調(diào)用另一個驅(qū)動則必須創(chuàng)建下一個棧單元。
      一個IRP到棧頂時,使用PIO_STACK_LOCATION
      IoGetCurrentIrpStackLocation(
      IN PIRP Irp
      );IoGetCurrentIrpStackLocation returns a pointer to the caller's stack location in the given IRP。
      如決定需要把這個IRP沿設(shè)備棧向下傳遞,使用IoCopyCurrentIrpStackLocationToNext or IoSkipCurrentIrpStackLocation簡單的將內(nèi)容復制到下一個單元,如果要更改下一個棧單元,要使用LOCATION
      IoGetNextIrpStackLocation(IN PIRP Irp );
      IoGetNextIrpStackLocation gives a higher level driver access to the next-lower driver's I/O stack location in an IRP so the caller can set it up for the lower driver.
      可使用IoCallDriver調(diào)用下一個驅(qū)動程序,當最低一層的驅(qū)動處理玩后調(diào)用IoCompleteRequest,IRP再向上傳遞返回用戶,當IRP向上傳遞時也可以每個驅(qū)動有機會再處理它,每個驅(qū)動要設(shè)置IoSetCompletionRoutine掛接一個例程 ,一個驅(qū)動不一定要沿著設(shè)備棧向下傳遞IRP,如果自己能處理就就使用IoCompleteRequest完成IrP
      2.5 設(shè)備接口
      用戶態(tài)使用Win32 CreateFile訪問驅(qū)動程序,dwShareMode為0時來請求獨占內(nèi)核對象在設(shè)備對象DEVICE_OBJECT結(jié)構(gòu)中存儲設(shè)備的信息,對于與設(shè)備的每個交互,相關(guān)的DEVICE_OBJECT被傳遞給驅(qū)動的回調(diào)例程。,但是開發(fā)者可以擴展設(shè)備結(jié)構(gòu),稱為設(shè)備擴展
      在PnP IRP中我們加載設(shè)備NTSTATUS Wdm1AddDevice( IN PDRIVER_OBJECT DriverObject,指向驅(qū)動程序的指針 IN PDEVICE_OBJECT pdo指向物理設(shè)備的指針)
      { DebugPrint("AddDevice");
      status = IoCreateDevice (DriverObject,創(chuàng)建設(shè)備
      sizeof(WDM1_DEVICE_EXTENSION),
      NULL, // No Name
      FILE_DEVICE_UNKNOWN,

      【基于Windows開發(fā)WDM設(shè)備驅(qū)動程序的方法】相關(guān)文章:

      Windows2000設(shè)備驅(qū)動程序的研制開發(fā)03-03

      基于PCI總線的雙DSP系統(tǒng)及WDM驅(qū)動程序設(shè)計03-19

      Windows CE中實現(xiàn)藍牙串口驅(qū)動程序03-18

      基于動態(tài)資源分配的WDM-PON結(jié)構(gòu)研究基于動態(tài)資源分配的WDM-PON結(jié)03-07

      基于PROFIBUS開發(fā)的FTU及同步采樣方法的研究03-19

      對于設(shè)備驅(qū)動程序通知應用程序的幾種方法11-16

      windows nt環(huán)境下fddi網(wǎng)卡驅(qū)動程序設(shè)計03-18

      高性能Windows圖形開發(fā)庫WinG03-28

      基于Windows Media技巧的流媒體系統(tǒng) 的設(shè)計與實現(xiàn)03-23

      主站蜘蛛池模板: 精品一区二区三区人妻久久| 无码a级毛片免费视频内谢| 日本久久一区二区三区高清 | 99久久久国产精品丝袜| 久久久一本精品99久久| 美腿丝袜美腿国产在线| 国产一级二级三级视频| 亚洲无码中文字幕日韩无码| 麻豆久久久国内精品| 日本高清一区二区三区视频| 少妇av免费在线播放 | 国产极品视觉盛宴在线观看 | 怀柔区| 女同av在线观看网站| a级国产精品片在线观看| 亚洲啪啪AⅤ一区二区三区| 亚洲av成人在线网站| 亚洲一区丝袜美腿在线观看| 91热爆在线精品| 亚洲视频在线观看一区二区三| 亚洲一区二区高清在线| 丰台区| 长治县| 吐鲁番市| 国产精品亚洲专区无码不卡| a√无码在线观看| 久久精品就是久久精品| 亚洲日韩成人无码不卡网站| 亚洲av制服一区二区三区| 日韩精品一区二区三区在线观看的| 亚洲美女天堂久久精品一区| 国产韩国精品一区二区三区| 五大连池市| 庆云县| 清流县| 一区二区三区国产偷拍| 亚洲免费视频一区二区三区| 司法| 99国产精品无码专区| 精精国产xxx在线视频app| 亚洲精彩视频一区二区|