【正文】
法是完全令人滿意的。 四川大學(xué)本科畢業(yè)論文 基于 win98 系統(tǒng)的數(shù)據(jù)采集開發(fā) 16 圖 Windows 95控制消息屬性頁 在該屬性頁中的所有消息都 Windows 95支持。 單擊“ Control Message”標(biāo)簽,對話框如圖 。 單擊“ API”標(biāo)簽,對話框如圖 。 Device ID(設(shè)備標(biāo)識 )是一個(gè) 16位的無符號整數(shù),是所創(chuàng)建的 VxD設(shè)備標(biāo)識,不能和其他 VxD設(shè)備的 Device ID相沖突。程序員在 QuickVxD中選擇和定義所需的 VxD代碼框架的基本特征,定義完成以后就可生成 VxD應(yīng)用程序框架,它使開發(fā)者只須在 VxD應(yīng)用框架中添加所需的代碼.而不必注重于編程的低級代碼。 Win32程序、庫 文件( *.lib)和目標(biāo)文件( *.obj)等都是 PE文件,而 VXD等都是 LE文件。 四川大學(xué)本科畢業(yè)論文 基于 win98 系統(tǒng)的數(shù)據(jù)采集開發(fā) 13 3 VxDView 工具的起始位置之問題 VxDview工具可用來瀏覽當(dāng)前系統(tǒng)裝載了 哪些虛擬驅(qū)動程序,我們可用該工具來查看程序是否裝載了某個(gè) VxD。我們在安裝時(shí)需把長路徑改成 MS DOS方式下的路徑名,具體設(shè)置時(shí)我們先應(yīng)進(jìn)入 MS DOS方式,用 DIR、 CD命令來獲取系統(tǒng)當(dāng)時(shí)的路徑數(shù)據(jù)?,F(xiàn)在廣泛使用的是 VTOO LSD 。那時(shí)的開發(fā)工作又苦又累。 3)對中斷通知處理成員函數(shù)編程 4)如果想讓所有的虛擬機(jī)管 理器都能夠處理本中斷,可以調(diào)用 forceDefaultOwner成員函數(shù)。例如用戶需要進(jìn)行中斷操作,那么就可以按照下面的方法使用 VHARDWAREENT類。 初始化操作既可以放在系統(tǒng)消息 DTOC_OPEN中,也可以放在用戶自定義消息中。 Windows操作系統(tǒng)在每次啟動時(shí)給硬件設(shè)備分配 I/ O端口、內(nèi)存、中斷、 DMA等資源,通過調(diào)用 DDK函數(shù) CONFIGMG_Get_ALLOC_Log_Conf來填充 CMCONFIG結(jié)構(gòu)能夠獲取Windows操作系統(tǒng)為硬件設(shè)備分配的硬件資源。 系統(tǒng)消息宏 DIOC_OPEN和 DIOC_CLOSE等不需要用戶顯示定義,在驅(qū)動程序啟動時(shí)自動加入消息隊(duì)列。設(shè)備類型一般為FILE_DEVICE_UNKNOWN,也可以使用 FILE_DEVICE_VEDIO、FILE_DEVICEE_NETWORK等其他設(shè)備類型,根據(jù)驅(qū)動程序文持的硬件 類型而定。 圖 1 使用 VTOOLSD 工具開發(fā) VXD 驅(qū)動程序的流程圖 VTooLSD工具提供了非常友好的 VXD驅(qū)動程序開發(fā)工具 QUICKVXD與調(diào)試工具使用 QUICKVXD 生成驅(qū)動 程序框架 在 VCIDE 環(huán)境中定制驅(qū)動程序 添加定制消息映射 初始化獲取硬件設(shè)備 初始化分配 I/O斷口、內(nèi)存、DMA等硬件資源 定制消息處理 I/O端口、內(nèi)存、中斷、 DMA等操作 特殊消息處理 釋放硬件資源、關(guān)閉驅(qū)動程序 使用 DRIVERMONITOR 調(diào)試完善驅(qū)動程序 四川大學(xué)本科畢業(yè)論文 基于 win98 系統(tǒng)的數(shù)據(jù)采集開發(fā) 10 DRIVERMONITOR,開發(fā)者首先在 QUICKVXD窗口中填寫幾個(gè)基本的參數(shù)生成 VXD驅(qū)動程序框架,在 VCIDE環(huán)境中添加定制消息映射處理驅(qū)動程序細(xì)節(jié),最后使用DRIVERMONITOR工具調(diào)試完善驅(qū)動程序。 (5)系統(tǒng)資源調(diào)用方式不同。在 VXD模式程序中,開發(fā)人員必須在驅(qū)動程序中,首先查找硬件設(shè)備的 DEVICEID和 VENDORID,通過這兩個(gè) ID號來連接對應(yīng)的硬件設(shè)備。 (2)驅(qū)動程序的入口點(diǎn)不同。由于 VXD模式驅(qū)動程序要求開發(fā)人員必須深入理解和掌握諸如 VMM(虛擬機(jī)管理器 )、 VNCD(虛 擬可編程終端控制器 )、 DMA(直接存儲器訪問 )、內(nèi)存管理等 Windows操作系統(tǒng)內(nèi)核的工作機(jī)制,開發(fā)難度大,適應(yīng)性差,M1crosoft公司試著逐步拋棄它。通過安裝自己的 Hooker函數(shù),就可以截獲系統(tǒng)內(nèi)所有對文件 I/ O的 API調(diào)用,井適時(shí)對相關(guān)文件進(jìn)行病毒檢查,從而實(shí)現(xiàn)實(shí)時(shí)監(jiān)控。顯然這種普通用戶進(jìn)程是無法勝任實(shí)時(shí)反病毒工作的,必須使后臺監(jiān)視進(jìn)程運(yùn)行在 Ring 0優(yōu)先級,實(shí)現(xiàn)這一目的基礎(chǔ)就是 VxD技術(shù)。一個(gè)好的反病毒軟件應(yīng)該 是 “以防為主,以殺為輔 ”,在病毒入侵時(shí)就把它清除掉,這就是實(shí)時(shí)反病毒技術(shù)。 實(shí)時(shí)工業(yè)控制軟件的開發(fā),以前大都是基于 DOS操作系統(tǒng),但是現(xiàn)在隨著 Windows 9x的普及,需要開發(fā)送于 Windows 9x的工控軟件,利用 VxD的功能就可實(shí)現(xiàn) Windows下的實(shí)時(shí)工控。程序員可利用 C或 C++編寫自己的 VxD,而不必操心許多繁瑣的細(xì)節(jié)。當(dāng)應(yīng)用程序調(diào)用 API函數(shù) CloseHandle(hDevice)關(guān)閉 VxD句柄時(shí), VxD將收到系統(tǒng)發(fā)來的帶控制碼 DIOC_CLOSEHANDLE的 W32_DEVICEIOCONTROL消息,同時(shí)該 VxD的引用計(jì)數(shù)減 l,當(dāng)最終引用計(jì)時(shí), VxD將收到系統(tǒng)發(fā)來的帶控制碼DIOC_LOSEHANDLE的 W32_DEVICEIOCONTROL消息,同時(shí)該 VxD的引用計(jì)數(shù)減 l,當(dāng)最終引用計(jì)數(shù)為 0時(shí),系統(tǒng)向 VxD發(fā)送控制消息 SYS_DYNAMIC_DEVICE_EXIT,然后將其從內(nèi)存中清除。 所有的 VXD 都應(yīng)該實(shí)現(xiàn)對 pdioc_IOCtlCode = DIOC_OPEN 和DIOC_CLOSEHANDLE 這兩種情形的處理。 //指向一個(gè)表示返回字節(jié)數(shù)的雙字 OVERLAPPED*dioc_ovrlp。 //指向輸入緩沖區(qū)的指針 DWORD dioc_cbInBuf。 //指向客戶寄存器的指針 VMHANDLE dioc_hvm。 該消息的處理程序的原型為: DWORD OnW32DeviceIoControl (PIOCTLPARAMS p)。 (2) 在 Windows系統(tǒng)下編程序本來就是寫消息處理程序與系統(tǒng)進(jìn)行通 信,所以掌握各個(gè)消息的含義對寫程序非常有用。系統(tǒng)向 VxD發(fā)送控制消息時(shí)將消息代號放在 EBX寄存器中,并在 EBx寄存器中放系統(tǒng)虛擬機(jī) (VM)句柄。 Windows 9x系統(tǒng)下有眾多的 VxD,每個(gè) VxD可四川大學(xué)本科畢業(yè)論文 基于 win98 系統(tǒng)的數(shù)據(jù)采集開發(fā) 5 提供 4種服務(wù),即 PM(保護(hù)模式 )API、 V86(虛擬 86)API、 WIn32服務(wù)和 VxD服務(wù),前 3種分別供應(yīng)用程序在 16位保護(hù)模式、 V86模式以及 32位保護(hù)模式下調(diào)用, VxD服務(wù)則只供其它 VxD使用;用戶開發(fā)的 VxD可提供任意上述服務(wù)。例如, vxD能獲得和修改設(shè)置在特定 VM中的當(dāng)前中斷向量。正常情況下 , VMM服務(wù)的使用范圍包括設(shè)備驅(qū)動程序、調(diào)試程序以及系統(tǒng)級的基本操作系統(tǒng)擴(kuò)展程序,而且 VMM服務(wù)的范圍覆蓋了最低級的操作系統(tǒng)需要,它主要包括: 事件服務(wù):它允許 VxD用信號通知某個(gè)特定線程的事件。 VMM是存在于 VxD。如它提供低級內(nèi)在管理和調(diào)度服務(wù);同時(shí)還有對虛擬設(shè)備驅(qū)動程序的服務(wù)。因此,在保護(hù)模式段中使用普通 OFFSET指令處應(yīng)該使用 OFFSET32宏, OFFSET32宏定義的偏移量為連接器確定了正確的偏移量修正信息。 (5)VxD_REAL_INIT段:實(shí)模式初始化段 (可選 )。該段用宏 VxD_CODE_SEG和 VxD_ICODE_ENDS定義開始和結(jié)束,也可命名為 _ITEXT。該段包括設(shè)備描述 DDB(Device Descriptor Block)、服務(wù)表和部分 VxD所用的全局?jǐn)?shù)據(jù)。 VxD 的結(jié)構(gòu)包含下面 5 個(gè)段的一些組合 : (1)VxD_CODE段:保護(hù)模式代碼段 (必須 )。 第三節(jié) Vxd 特征淺析 VxD即虛擬設(shè)備驅(qū)動程序是 32位保護(hù)方式的驅(qū)動程序,用作 Windows 9x系統(tǒng)和物理設(shè)備之間的接口,負(fù)責(zé)管理系統(tǒng)的某項(xiàng)資源,如硬件設(shè)備或已安裝的軟件。如 VKD代表Virtual Keyboard Device(鍵盤驅(qū)動 ), VPICD代表 Virtual Programmable Interrupt Device(可編程中斷控制器驅(qū)動 )。由于操作系統(tǒng)的權(quán)限為 0級,它就可以 捕獲權(quán)限不為。 Windows98只利用了保護(hù)模式和 V86模式這兩種模式,保護(hù)模式給我們帶來很多優(yōu)越 性,如應(yīng)用程序不再受 1M內(nèi)存的限制,理論上,在保護(hù)模式下, CPU可以進(jìn)行 4096M內(nèi)存的尋址。由于 VxD不僅僅服務(wù)于一個(gè)物理設(shè)備 (比如多個(gè)串口 )或與一個(gè) VM發(fā)生聯(lián)系,所以 VxD需要產(chǎn)生自己支持的數(shù)據(jù)結(jié)構(gòu) (Supporting Data Structure)來保存每個(gè)設(shè)備的配置和狀態(tài)信息。 VMM執(zhí)行與系統(tǒng)資源相關(guān)的工作,提供虛擬機(jī)環(huán)境 (能產(chǎn)生、調(diào)度、卸載虛擬機(jī) ).負(fù)責(zé)調(diào)度多線程占先時(shí)間片及管理虛擬內(nèi)存等工作. vxD事實(shí)上就是實(shí)現(xiàn)虛擬機(jī)軟件的一部分.正是 VMM和 VxD構(gòu)成了 Windows的 Ring 0級系統(tǒng)核心。操作系統(tǒng)通過 VxD將物理設(shè)備虛擬化,截取應(yīng)用程序?qū)τ布恼埱?,并向?yīng)用程序提供一個(gè)與硬件接口的虛擬環(huán)境。例如,當(dāng)放電間歇由零變大時(shí),電壓信號也由零變大,而電流信號由大變零,兩者變化相位相反。由于放電加工過程 的放電間歇很小,而且在不斷地變化,所以直接測量間歇值是很困難的。故必須依靠自動進(jìn)給機(jī)構(gòu)和自動調(diào)節(jié)系統(tǒng)來實(shí)現(xiàn)。 主題詞 : 數(shù)據(jù)采集、設(shè)備驅(qū)動程序、 VTOOLS、 VXD 四川大學(xué)本科畢業(yè)論文 基于 win98 系統(tǒng)的數(shù)據(jù)采集開發(fā) II Study on data gather base on Window98 (Mechanical design manufacture and automation) Student: Tang Junshan Teacher: Li Xianglong Abstract: The request of real time data processing is more and more important because of the improvement of science technology. We always need to use lots kinds of instrument to help us to get the result of measure to ensure the properties of a object. Data Collection is foundation and key of the numerical control of machine tool and machine electric research paper is main about the Driver Development of Data Collection and the method of Driver Develop based on Windows 98 OS using VtoolsD paper shows the advantages and disadvantages of Driver Develop using VtoolsD SDk and Visual C++ on virtual device. And it farther assumes using the PC7422 12bit 32 route A/D conversion card to simulate the process of the voltage data Collection during the tiny motion process. We could research and develop the Data collection flow from microevolution through these serials of methods, to let Data Collection to be used safely and effectively. The Research paper covers pa