亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Windows系統(tǒng)下關(guān)于硬件驅(qū)動程序的通知應(yīng)用程序設(shè)計(jì)方法

        2013-01-01 00:00:00徐海龍
        電腦迷 2013年1期

        摘 要 在目前流行的Windows操作系統(tǒng)中,設(shè)備驅(qū)動程序是操縱硬件的最底層軟件接口。筆者結(jié)合個(gè)人經(jīng)驗(yàn),在此分享設(shè)備驅(qū)動程序設(shè)計(jì)過程中的一些經(jīng)驗(yàn),給出設(shè)備驅(qū)動程序通知應(yīng)用程序的4種方法,具體說明每種方法的原理和實(shí)現(xiàn)過程,希望能夠給設(shè)備驅(qū)動程序的設(shè)計(jì)者提供一些幫助。

        關(guān)鍵字 Windows系統(tǒng) 驅(qū)動程序 通知應(yīng)用程序 設(shè)計(jì) 方法

        中圖分類號: TP316 文獻(xiàn)標(biāo)識碼:A

        1 前言

        操作系統(tǒng)的穩(wěn)定性及可移植性是務(wù)必要優(yōu)先確保的,為此Windows操作系統(tǒng)不支持應(yīng)用程序直接訪問系統(tǒng)的硬件資源,而是必須借助于相應(yīng)的設(shè)備驅(qū)動程序。設(shè)備驅(qū)動程序可以直接操作硬件,假如應(yīng)用程序和設(shè)備驅(qū)動程序之間實(shí)現(xiàn)了雙向通信,也就達(dá)到了應(yīng)用程序控制底層硬件設(shè)備的目的。

        2 通知應(yīng)用程序設(shè)計(jì)四種方法

        鑒于設(shè)備驅(qū)動程序通知應(yīng)用程序的重要性,本人結(jié)合一些經(jīng)驗(yàn),對它進(jìn)行了總結(jié),歸納出5種方法摘要:異步過程調(diào)用(APC)、事件方式(VxD)、消息方式、異步I/O方式和事件方式(WDM)。下面分別說明這幾種方式的原理。

        2.1 異步過程調(diào)用(APC)

        Win32應(yīng)用程序使用CreateFile()函數(shù)動態(tài)加載設(shè)備驅(qū)動程序,然后定義一個(gè)回調(diào)函數(shù)backFunc(),并且將回調(diào)函數(shù)的地址%26amp;backFunc()作為參數(shù),通過DeviceIoControl()傳送給設(shè)備驅(qū)動程序?;卣{(diào)函數(shù)的輸入?yún)?shù)是由設(shè)備驅(qū)動程序填入的,回調(diào)函數(shù)在這里主要是對消息進(jìn)行處理。

        2.2 事件方式(VxD)

        首先,Win32應(yīng)用程序創(chuàng)建一個(gè)事件的句柄,稱其為Ring3句柄。由于虛擬設(shè)備驅(qū)動程序使用事件的Ring0句柄,因此,需要?jiǎng)?chuàng)建Ring0句柄。用LoadLibrary()函數(shù)加載未公開的動態(tài)鏈接庫Kernel32.dll,獲得動態(tài)鏈接庫的句柄。然后,調(diào)用GetProcAddress(), 找到函數(shù)OpenVxDHandle()在動態(tài)鏈接庫中的位置。接著,用OpenVxDHandle()函數(shù)將Ring3事件句柄轉(zhuǎn)化為Ring0事件句柄。Win32應(yīng)用程序用CreateFile()函數(shù)加載設(shè)備驅(qū)動程序。

        2.3 消息方式

        Win32應(yīng)用程序調(diào)用CreateFile()函數(shù)動態(tài)加載虛擬設(shè)備驅(qū)動程序。加載成功后,通過調(diào)用DeviceIoControl()函數(shù)將窗體句柄傳送給VxD,VxD利用這個(gè)句柄向窗體發(fā)消息。當(dāng)條件滿足時(shí),VxD調(diào)用SHELL_PostMessage()函數(shù)向Win32應(yīng)用程序發(fā)送消息。SHELL_PostMessage()函數(shù)的第一個(gè)參數(shù)為Win32窗體句柄,第二個(gè)參數(shù)為消息ID號,第三、四個(gè)參數(shù)為發(fā)送給消息處理函數(shù)的參數(shù),第五、六個(gè)參數(shù)為回調(diào)函數(shù)和傳給它的參數(shù)。Win32應(yīng)用程序收到消息后,對消息進(jìn)行處理。

        2.4 事件方式(WDM)

        Win32應(yīng)用程序首先創(chuàng)建一個(gè)事件,然后將該事件句柄傳給設(shè)備驅(qū)動程序,接著創(chuàng)建一個(gè)輔助線程,等待事件的有信號狀態(tài),自己則接著干其他事情。設(shè)備驅(qū)動程序獲得該事件的句柄后,將它轉(zhuǎn)換成能夠使用的事件指針,并且把它寄存起來,以便后面使用。

        3 結(jié)語

        在目前流行的Windows操作系統(tǒng)中,設(shè)備驅(qū)動程序是操縱硬件的最底層軟件接口。它向上提供和硬件無關(guān)的用戶接口,向下直接進(jìn)行I/O、硬件中斷、DMA和內(nèi)存訪問等操作。它將應(yīng)用程序和硬件細(xì)節(jié)屏蔽開來,使軟件不依靠于硬件并且可在多個(gè)不同的平臺之間移植。這4種方法都經(jīng)過實(shí)際測試。測試結(jié)果表明,它們都能夠達(dá)到設(shè)備驅(qū)動程序通知應(yīng)用程序的目的。

        參考文獻(xiàn)

        [1] 李和平. 基于DSP的ICT圖像重建系統(tǒng)探究. 北京摘要: 北京航空航天大學(xué)機(jī)械工程及自動化學(xué)院, 2002

        [2] (美)Chris Cant. Windows WDM設(shè)備驅(qū)動程序開發(fā)指南. 孫義, 馬莉波, 國雪飛等譯. 北京摘要: 機(jī)械工業(yè)出版社 2000

        [3] 歐青立,徐建波,李方敏,等. 虛擬設(shè)備驅(qū)動程序VxD的探究和開發(fā). 計(jì)算機(jī)工程,2003

        国产激情一区二区三区成人免费| 18禁黄网站禁片免费观看女女| 国产精品久久久久影院| 亚洲天堂99| 国产精品无码一区二区在线观一| 东方aⅴ免费观看久久av| 少妇被爽到高潮动态图| 91av小视频| 亚洲av激情久久精品人| 青青草激情视频在线播放| 色呦呦九九七七国产精品| 精品乱人伦一区二区三区| 天天躁夜夜躁天干天干2020| 国产成人无码一区二区三区在线| 国产日韩A∨无码免费播放| 国产日韩乱码精品一区二区| 国产亚洲一二三区精品| 国产欧美亚洲精品第一页| 国产 国语对白 露脸| 国产丝袜在线精品丝袜不卡| 一区二区三区少妇熟女高潮| 日本亚洲精品一区二区三| 亚洲av无码潮喷在线观看| 亚洲日本va中文字幕久久| 精品少妇一区一区三区| 青青草久热手机在线视频观看| av天堂手机在线看片资源| 日韩人妻精品中文字幕专区| 国产亚洲精品成人aa片新蒲金| 亚洲av无码av制服另类专区 | 国产三级精品三级在专区中文| 亚洲无人区乱码中文字幕能看| 欧美人与禽zozzo性伦交| 亚洲丁香婷婷综合久久小说| 无码成年性午夜免费网站蜜蜂| 一区二区三区在线观看视频 | 久久婷婷五月综合97色直播| 人妻少妇av无码一区二区 | 国产精品久久国产三级国电话系列 | 国产99久久久久久免费看| 五月婷婷六月激情|