ISA數據采集卡的WDM驅動程序實現
發布時間:2007/8/29 0:00:00 訪問次數:569
摘要:ISA設計在WINOWS新的驅動程序模型WDM(WINDOWS DRIVER MODEL)中沒有獲得很好的支持,使用WDM實現需要一些特殊處理。主要討論老式ISA設備的WDM驅動程序的設計與實現。
關鍵詞:Windows驅動程序模型(WDM) 工業標準結構(ISA) 數據采集
WDM作為微軟為WINDOWS 2000及以后版本準備的新驅動模型,它可以在WINDOWS 98及以后的操作系統上共享。這種具有跨平臺性的設備驅動模型可以大大簡化驅動程序的開發工作。WDM支持PNP(即插即用),為用戶的PNP設備驅動完成了大量的底層工作。這也使得WDM對各種老設備,特別是那些不具有即插即用特性硬件的支持明顯的不足。在科研和工控中,最常用的數據采集卡通常都是基于PC總線的不能為PNP提供硬件支持的ISA設備。為這類硬件編寫非WDM驅動程序只能局部支持PNP特性,而且需要做大量額外的工作如:必須檢測硬件,為硬件創建設備對象(用于代表硬件),配置并初始化硬件使其正常工作,這些工作非常復雜。利用WDM可以避免這些麻煩。
1 WDM的結構
WDM實際上是一個編寫驅動程序的規范。其驅動程序結構的特點和WINDOWS程序設計的消息驅動機制很相像,采用IRP驅動機制。WINDOWS 98和WINDOWS 2000處理IRP的方式一樣,本質卻完全不同。
WINDOWS 2000主要由I/O管理器來管理驅動程序的行為,管理的方法就是給驅動程序發送各種IRP,同時I/O管理器還負責傳遞這個設備的用戶請求給驅動程序。驅動程序不能直接操作硬件設備,而是通過一個叫做HAL(硬件設備抽象層)的層來訪問底層設備。HAL完成對各種硬件差異的屏蔽。Windows 98內核與Windows 2000內核有很大的差別。Windows 98操作系統的內核稱為虛擬機管理器(VMM)。虛擬設備驅動程序(VxD)則使設備虛擬化,從而與虛擬機管理器形成虛擬機。Windows 9x的內核不支持IRP,它通過模擬的方法支持WDM和IRP。Windows 98包含了NTKERN.VXD(VMM32.VXD)系統模塊,該模塊含有大量Windows NT內核支持函數的Windows實現。NTKERN.VXD使用與Windows 2000相同的方式創建IRP并發送IRP到WDM驅動程序。也就是說,Windows 98是使用VxD技術實現WDM的。盡管Windows 98和Windows 2000的內核完全不同,但是WDM的結構在Windows 98和2000下可以認為是完全相同的。
WDM驅動程序面對的主要內容是一系列內核驅動對象。這些對象包括驅動對象、設備對象,還有一系列的資源抽象對象如中斷對象、適配器對象(處理DMA操作)、內核模式派發器對象、控制器對象、推遲過程對象、定時器對象、設備隊列對象、回調對象等。其中驅動對象由I/O管理器負責創建和管理。設備對象代表用戶需要操作的物理或者是邏輯設備。設備對象負責管理自己設備所需要的各種資源對象。這些資源對象有的代表真正的物理設備如中斷對象、適配器對象、定時器對象;有的對象則是邏輯對象,它們是操作系統實現自己的特性所必需的,如推遲過程調用就是與操作系統的搶占式多任務的實現有關。WDM驅動程序利用IRP和這些對象完成硬件設備的抽象化,并對應用程序提供統一操作接口。這就是所謂的WDM規范。
WDM驅動程序的結構很簡單。它的主體是一個入口函數DriverEntry。DriverEntry的第一個參數是指針,指向一個剛被初始化的驅動程序對象,該對象代表驅動程序。WDM驅動程序的DriverEntry例程完成這個對象的初始化并返回。WDM驅動程序的DriverEntry例程的主要工作是把各種函數指針填入驅動程序對象。這些指針對操作系統指明了驅動程序容器中各種子例程的位置。它包括下面這些指針成員:
·DriverUnload指向驅動程序的清除例程。I/O管理器會在卸載驅動程序前調用該例程。通常WDM驅動程序的DriverEntry例程一般不分配任何資源,所以DriverUnload例程也沒有什么清除工作要做。
摘要:ISA設計在WINOWS新的驅動程序模型WDM(WINDOWS DRIVER MODEL)中沒有獲得很好的支持,使用WDM實現需要一些特殊處理。主要討論老式ISA設備的WDM驅動程序的設計與實現。
關鍵詞:Windows驅動程序模型(WDM) 工業標準結構(ISA) 數據采集
WDM作為微軟為WINDOWS 2000及以后版本準備的新驅動模型,它可以在WINDOWS 98及以后的操作系統上共享。這種具有跨平臺性的設備驅動模型可以大大簡化驅動程序的開發工作。WDM支持PNP(即插即用),為用戶的PNP設備驅動完成了大量的底層工作。這也使得WDM對各種老設備,特別是那些不具有即插即用特性硬件的支持明顯的不足。在科研和工控中,最常用的數據采集卡通常都是基于PC總線的不能為PNP提供硬件支持的ISA設備。為這類硬件編寫非WDM驅動程序只能局部支持PNP特性,而且需要做大量額外的工作如:必須檢測硬件,為硬件創建設備對象(用于代表硬件),配置并初始化硬件使其正常工作,這些工作非常復雜。利用WDM可以避免這些麻煩。
1 WDM的結構
WDM實際上是一個編寫驅動程序的規范。其驅動程序結構的特點和WINDOWS程序設計的消息驅動機制很相像,采用IRP驅動機制。WINDOWS 98和WINDOWS 2000處理IRP的方式一樣,本質卻完全不同。
WINDOWS 2000主要由I/O管理器來管理驅動程序的行為,管理的方法就是給驅動程序發送各種IRP,同時I/O管理器還負責傳遞這個設備的用戶請求給驅動程序。驅動程序不能直接操作硬件設備,而是通過一個叫做HAL(硬件設備抽象層)的層來訪問底層設備。HAL完成對各種硬件差異的屏蔽。Windows 98內核與Windows 2000內核有很大的差別。Windows 98操作系統的內核稱為虛擬機管理器(VMM)。虛擬設備驅動程序(VxD)則使設備虛擬化,從而與虛擬機管理器形成虛擬機。Windows 9x的內核不支持IRP,它通過模擬的方法支持WDM和IRP。Windows 98包含了NTKERN.VXD(VMM32.VXD)系統模塊,該模塊含有大量Windows NT內核支持函數的Windows實現。NTKERN.VXD使用與Windows 2000相同的方式創建IRP并發送IRP到WDM驅動程序。也就是說,Windows 98是使用VxD技術實現WDM的。盡管Windows 98和Windows 2000的內核完全不同,但是WDM的結構在Windows 98和2000下可以認為是完全相同的。
WDM驅動程序面對的主要內容是一系列內核驅動對象。這些對象包括驅動對象、設備對象,還有一系列的資源抽象對象如中斷對象、適配器對象(處理DMA操作)、內核模式派發器對象、控制器對象、推遲過程對象、定時器對象、設備隊列對象、回調對象等。其中驅動對象由I/O管理器負責創建和管理。設備對象代表用戶需要操作的物理或者是邏輯設備。設備對象負責管理自己設備所需要的各種資源對象。這些資源對象有的代表真正的物理設備如中斷對象、適配器對象、定時器對象;有的對象則是邏輯對象,它們是操作系統實現自己的特性所必需的,如推遲過程調用就是與操作系統的搶占式多任務的實現有關。WDM驅動程序利用IRP和這些對象完成硬件設備的抽象化,并對應用程序提供統一操作接口。這就是所謂的WDM規范。
WDM驅動程序的結構很簡單。它的主體是一個入口函數DriverEntry。DriverEntry的第一個參數是指針,指向一個剛被初始化的驅動程序對象,該對象代表驅動程序。WDM驅動程序的DriverEntry例程完成這個對象的初始化并返回。WDM驅動程序的DriverEntry例程的主要工作是把各種函數指針填入驅動程序對象。這些指針對操作系統指明了驅動程序容器中各種子例程的位置。它包括下面這些指針成員:
·DriverUnload指向驅動程序的清除例程。I/O管理器會在卸載驅動程序前調用該例程。通常WDM驅動程序的DriverEntry例程一般不分配任何資源,所以DriverUnload例程也沒有什么清除工作要做。
上一篇:中國國際光電應用博覽會圓滿落幕
上一篇:高精度參考電壓發生器LT1019