激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频

基于Windows開(kāi)發(fā)WDM設備驅動(dòng)程序的方法

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

基于Windows2000開(kāi)發(fā)WDM設備驅動(dòng)程序的方法

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

關(guān)鍵詞: WDM 驅動(dòng)程序

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

【基于Windows開(kāi)發(fā)WDM設備驅動(dòng)程序的方法】相關(guān)文章:

Windows2000設備驅動(dòng)程序的研制開(kāi)發(fā)03-03

基于PCI總線(xiàn)的雙DSP系統及WDM驅動(dòng)程序設計03-19

Windows CE中實(shí)現藍牙串口驅動(dòng)程序03-18

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

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

對于設備驅動(dòng)程序通知應用程序的幾種方法11-16

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

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

基于Windows Media技巧的流媒體系統 的設計與實(shí)現03-23

激情欧美日韩一区二区,浪货撅高贱屁股求主人调教视频,精品无码成人片一区二区98,国产高清av在线播放,色翁荡息又大又硬又粗视频