亚洲免费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é)合個人經(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ū)動程序,然后定義一個回調(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)建一個事件的句柄,稱其為Ring3句柄。由于虛擬設(shè)備驅(qū)動程序使用事件的Ring0句柄,因此,需要創(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利用這個句柄向窗體發(fā)消息。當(dāng)條件滿足時,VxD調(diào)用SHELL_PostMessage()函數(shù)向Win32應(yīng)用程序發(fā)送消息。SHELL_PostMessage()函數(shù)的第一個參數(shù)為Win32窗體句柄,第二個參數(shù)為消息ID號,第三、四個參數(shù)為發(fā)送給消息處理函數(shù)的參數(shù),第五、六個參數(shù)為回調(diào)函數(shù)和傳給它的參數(shù)。Win32應(yīng)用程序收到消息后,對消息進(jìn)行處理。

        2.4 事件方式(WDM)

        Win32應(yīng)用程序首先創(chuàng)建一個事件,然后將該事件句柄傳給設(shè)備驅(qū)動程序,接著創(chuàng)建一個輔助線程,等待事件的有信號狀態(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é)屏蔽開來,使軟件不依靠于硬件并且可在多個不同的平臺之間移植。這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

        蜜桃视频一区二区三区| 综合久久给合久久狠狠狠97色| 欧美在线日韩| 国产成人亚洲合色婷婷| 亚洲国产女性内射第一区二区| 久久精品国产精品青草| 色妺妺视频网| 国产好片日本一区二区三区四区 | 精品国产一区二区三区av麻| 成人乱码一区二区三区av| 国产a三级久久精品| 亚洲日韩精品AⅤ片无码富二代| 免费精品人妻一区二区三区| 国产亚洲一区二区在线观看| 国产亚洲美女精品久久久| 中国精品久久久久国产| 亚洲国产av一区二区三区| 午夜理论片yy44880影院| 国产精在线| 少妇勾引视频网站在线观看| 久久精品国产亚洲av精东| 亚洲av永久无码精品一区二区| 国产精品国产三级国产专区5o| 日本免费一区二区精品| 亚洲无码在线播放| 亚洲av永久无码一区| 91极品尤物在线观看播放| 国产亚洲91精品色在线| 亚洲va中文字幕| 在线精品日韩一区二区三区| 亚洲精品一区二区三区四区| 久久精品国产字幕高潮| 欧美俄罗斯乱妇| 青青草一级视频在线观看| 国产日本精品视频一区二区| 国产真实夫妇视频| 午夜福利视频男同女同| 少妇被爽到高潮喷水免费福利| 少妇粉嫩小泬喷水视频www| 秋霞影院亚洲国产精品| 国产人妖直男在线视频|