999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于WDM的I/O設備驅動程序的設計研究

2009-04-29 00:00:00孫護軍
電腦知識與技術 2009年33期

摘要:該文介紹了WDM的特點與結構;闡述了I/O設備驅動程序的基本構成;探討了DLL在實際應用中的意義。

關鍵詞:WDMDriver;Windows;例程;DLL

中圖分類號:TP316文獻標識碼:A文章編號:1009-3044(2009)33-9557-02

Study about WDM-based I/O Device Driver

SUN Hu-jun

(Department of Computer Engineering, Xi'an Aerotechnical College, Xi'an 710077, China)

Abstract: This article describes the characteristics and structure of the WDM; Describes I/O device driver a basic component;Discusses the DLL in the practical application significance.

Key words: WDMDriver; Windows; distance; DLL

在計算機應用系統和控制系統的開發過程中,通常需要在Windows 環境下,直接訪問和控制具有特定功能的硬件設備。由于操作系統版本不同,其運行機制必然存在差異。在這里針對驅動程序的運行機制主要分為兩類。一類是以前的Dos 和Windows98系統,在這類環境下可以直接完成對I/O 端口的讀寫;另一類是NT4.0以上版本Windows系統,在這類環境下,為了使系統變得更為安全,Windows對系統底層操作采取了屏蔽策略,不允許用戶態的應用程序直接訪問I/O端口,而是通過編寫驅動程序,這樣可以使用Kernel層設備驅動程序提供的各種服務間接地訪問I/O,因此編寫I/O設備驅動程序極為重要。

為了解決I/O設備驅動程序和不同結構操作系統的兼容性[3],微軟公司在 1997年提出了一種全新的Windows 驅動程序模式(WDM),支持即插即用、電源管理和WMI技術,為存在于Windows 9x 和Windows 2000 操作系統中的設備驅動程序提供了統一的參考框架。

1 WDM系統函數

WDM 驅動程序包含了許多子例程,操作系統通過調用相關例程來執行針對I/O 請求包的各種操作[1]。WDM 驅動程序可執行包中的內容如下:

1.1 基本驅動程序與設備操作

DrvierEntry、 AddDevice

① DriverEntry例程負責初始化程序范圍的數據結構和資源。

② AddDevice例程是被系統調用,進行初始化一個被枚舉的新設備。

1.2 I/O 控制

DpcForIsr、OnInterrupt、StartIo、AdapterControl

① StartIo例程進行串行處理,對IRP進行排隊。

② AdaperControl例程負責執行DMA 傳輸。

③ OnInterrupt是一個中斷服務例程。

④ DPC是一個延遲過程調用例程。

1.3 派發功能函數

DispatchWriter、DispatchRead、DispatchWmi、DispatchPnp DispatchPower

Dispatch為調度例程,負責處理應用程序與驅動程序之間的通信,包括Writer,Read等,開發人員必須選擇特定驅動中需要的例程。

1.4 設備的創建和初始化

1) 內核模式驅動程序沒有main或WinMain,而是由I/O管理器根據需要調用一個驅動程序例程:① 驅動程序被裝入時;② 驅動程序被卸出或系統關閉時;③ 用戶程序發出I/O系統服務調用時;④ 共享硬件資源對驅動程序可用時;⑤ 設備操作過程中的任何時候。

2) 相關內容:① 所有驅動程序必須包含DriverEntry例程,進行驅動程序初始化。② 利用AddDevice函數負責創建一個設備對象,并建立一個私有的設備擴展對象。③ 給出設備名并創建符號連接名或者注冊設備接口。④ 初始化設備擴展和設備對象的標志位。⑤ 把新設備對象附著到設備堆棧中。

2 硬件的訪問及資源分配

PnP管理器使用IRP來指導驅動程序啟動、停止和刪除設備,并查詢驅動程序的設備,WDM是PnP驅動程序,必須具備PnP例程。IRP是DDK定義的一個數據結構。當驅動程序接收到PnP子碼IRP_MN_START_DEVICE 時,IRP堆棧列表內的兩個字段AllocatedResourcesTranslated 和AllocatedResources,列出分配的資源。

用來描述這些資源的結構是CM_PARTIAL_RESOURCE_LIST 類型,它包括一個CM_PARTIAL_RESOURCE_DESCRIPTOR 結構的計數數組。

數組中每一個資源描述符都有一個Type 成員[3],它表示所代表的資源的類型。主要有4個重要的共同體類型是Port(端口)、Interrupt(中斷)、Memory(內存)、Dma(直接內存訪問)。得到了設備的I/O地址,就可以對設備進行讀取了,在讀寫端口地址和內存時應該使用標準的內核讀取例程,在WDM 中應使用HAL宏等。這樣就可以不用考慮不同操作平臺的特性,也可以更好的適應Windows 2000 多任務,多進程環境的要求。

在分配硬件資源時,首先必須編輯安裝文件(inf文件),它包含了WDM 設備驅動程序的制造商信息、要復制的文件列表、要創建的注冊表項等。INF 安裝文件向操作系統添加了硬件資源。當驅動程序收到IRP_MJ_PNP 的IRP_MN_START_DEVICE 的子碼時,驅動程序獲得設備的硬件資源。

3 動態鏈接庫(.dll)

雖然驅動程序是為設備硬件層編程服務的,但同樣需要和應用程序進行通信,從而最終達到應用程序控制設備的目的。

通常情況下,應用程序通過專用的API 函數操作硬件,但由于這些函數攜帶參數很多,使用起來并不方便,因此可以另外開發一套用于中轉數據的功能函數集(動態鏈接庫),可以使得底層驅動設備對用戶是透明的[2]。采用這種分層結構,應用程序通過動態鏈接庫(.dll)來存取I/O設備。動態鏈接庫(.dll)提供給應用程序最常用的接口函數,包括設備初始化,關閉設備,存取端口等。在應用程序中加入特定的動態鏈接庫可以很方便的操作端口,并且可以重復使用,縮短了開發周期。

4 結束語

WDM驅動程序模型具有較好的可移植性:編寫驅動程序時,WDM規定只使用ANSI C標準規定的語言元素;硬件和軟件的可配置性靈活:使用HAL工具調用低級總線驅動程序或實現一個標準控制接口,避免直接引用硬件;使用注冊表作為配置信息的容器;可運行在多處理器平臺上。基于 WDM 驅動模型設計的驅動程序可以穩定地在Windows 2000/XP/NT下運行,可以更好的實現分布式的數據監測和控制。

參考文獻:

[1] 武安河.WDM設備驅動程序開發[M].北京:電子工業出版社,2003.

[2] Cant C.Writing Windows WDM Device Drivers[M].孫義,譯.北京:機械工業出版社,2007.

[3] 李建.Windows2000下I/O設備驅動程序設計[D].北京:北方交通大學,2003.

[4] 張帆.Windows驅動開發技術詳解[M].北京:電子工業出版社,2008.

[5] 湯冬誼.Windows NT4.0下設備驅動程序的開發與應用[J].電子技術應用,2000(9).

主站蜘蛛池模板: 美女无遮挡免费视频网站| 97超碰精品成人国产| 色精品视频| 日韩欧美中文字幕在线韩免费| 亚洲小视频网站| 欧美a在线视频| 欧美精品不卡| 伊人久久综在合线亚洲91| 91网站国产| 亚洲欧美成人网| 香蕉伊思人视频| 欧美在线免费| 亚洲系列中文字幕一区二区| 国产综合日韩另类一区二区| 伊人天堂网| 国产高清精品在线91| 日韩在线播放欧美字幕| 极品私人尤物在线精品首页| 欧美色伊人| 欧美精品啪啪| 18禁影院亚洲专区| 亚洲成a人片| 在线国产你懂的| 亚洲有无码中文网| 国产资源站| 欧美区一区二区三| 亚洲人成网址| 丰满人妻久久中文字幕| 激情爆乳一区二区| 91人妻日韩人妻无码专区精品| 久久久久亚洲AV成人人电影软件| 免费高清a毛片| 久久夜色精品| 日韩中文字幕免费在线观看| 香蕉精品在线| 亚洲国产欧美国产综合久久| 国产精品久久久久久影院| 日韩AV无码免费一二三区| 国产精品成人啪精品视频| 国产网站免费| 无码免费的亚洲视频| 在线欧美日韩国产| 美女潮喷出白浆在线观看视频| 国产精品人成在线播放| 国产精品区网红主播在线观看| 色亚洲激情综合精品无码视频| 动漫精品啪啪一区二区三区| 无遮挡国产高潮视频免费观看| 亚洲国内精品自在自线官| 国产午夜在线观看视频| 日本道中文字幕久久一区| 色噜噜狠狠狠综合曰曰曰| 国产女人在线| 四虎永久免费地址在线网站| 婷五月综合| 伊人久久影视| 蝌蚪国产精品视频第一页| 熟女视频91| 亚洲综合在线网| 四虎永久在线精品国产免费 | 久一在线视频| 三级国产在线观看| 亚洲最猛黑人xxxx黑人猛交| 免费精品一区二区h| 久久国产香蕉| 国产jizzjizz视频| 国内精品久久人妻无码大片高| 日本91在线| 午夜精品福利影院| 自拍中文字幕| 日韩无码视频播放| 国产人成午夜免费看| 亚洲va视频| 久久综合亚洲色一区二区三区| 国产精品青青| 亚洲天堂网在线播放| 制服丝袜在线视频香蕉| 日本伊人色综合网| 国产精品白浆无码流出在线看| 国产欧美自拍视频| 亚洲国产日韩一区| 亚洲日韩高清无码|