青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

任我行

一天一個腳印......
每日一句:
posts - 54, comments - 218, trackbacks - 1, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

驅(qū)動程序開發(fā)-概述

Posted on 2006-01-03 10:03 任我行 閱讀(2627) 評論(5)  編輯 收藏 引用 所屬分類: 驅(qū)動開發(fā)

很久沒有網(wǎng)了,出了一段時間的差,近來,莫名的就有點郁悶!前不久在大富翁上發(fā)了一份帖子是關(guān)于delphi程序員的發(fā)展,大家的反應(yīng)并不都是很好。于是開始覺得可以考慮換個方向。以前我是做MIS開發(fā)的。換哪個方向呢?人越多的方向,好像越是沒有前途。想想當初上大學(xué),那可是越多人考的學(xué)校,學(xué)費越貴啊!可現(xiàn)在的職業(yè)呢?越多人干的事,越是沒有前途了。考慮來考慮去,決定學(xué)習(xí)一下驅(qū)動程序的開發(fā)吧!于是從網(wǎng)上查找了一些資料,看的懂的覺得蠻不錯適合我這種小學(xué)生的就貼了出來,算是學(xué)習(xí)筆記吧!

用戶模式與內(nèi)核模式

從Intel80386開始,出于安全性和穩(wěn)定性的考慮,該系列的CPU可以運行于ring0~ring3從高到低四個不同的權(quán)限級,對數(shù)據(jù)也提供相應(yīng)的四個保護級別。運行于較低級別的代碼不能隨意調(diào)用高級別的代碼和訪問較高級別的數(shù)據(jù),而且也只有運行在ring0層的代碼可以直接對物理硬件進行訪問。由于WindowsNT是一個支持多平臺的操作系統(tǒng),為了與其他平臺兼容,它只利用了CPU的兩個運行級別。一個被稱為內(nèi)核模式,對應(yīng)80x86的ring0層,是操作系統(tǒng)的核心部分,設(shè)備驅(qū)動程序就是運行在該模式下;另一個被稱為用戶模式,對應(yīng)80x86的ring3層,操作系統(tǒng)的用戶接口部分(就是我們通常所說的win32 API)以及所有的用戶應(yīng)用程序都運行在該級別。操作系統(tǒng)對運行在內(nèi)核模式下的代碼是不設(shè)防的,所以不管是建設(shè)還是破壞內(nèi)核模式下的編程都是值得去研究的。

圖1-WIN2000系統(tǒng)的分層結(jié)構(gòu)

在物理硬件與系統(tǒng)核心之間有一個硬件抽象層(HardwareAbstractionLayer),它屏蔽了不同平臺硬件的差異,向操作系統(tǒng)的上層提供了一套統(tǒng)一的接口。從圖中我們還可以看到,設(shè)備驅(qū)動程序(DeviceDriver)是被I/O管理器(I/OManager)包圍起來的,即驅(qū)動程序與操作系統(tǒng)上層的通信全部都要通過I/O管理器。這給驅(qū)動程序的編寫帶來了很大的便利,因為很多諸如接收用戶的請求、與用戶程序交換數(shù)據(jù)、內(nèi)存映射、掛接中斷、同步等等麻煩的工作都由I/O管理器代勞了。

驅(qū)動程序的分類

驅(qū)動程序并不像所有人想的那樣一定要和硬件打交道,我粗略的把他分為兩類:硬驅(qū)動和軟驅(qū)動。硬驅(qū)動就是對硬件直接編程進行控制,這類驅(qū)動通常必須遵守硬件的通信協(xié)議,直接對硬件進行端口訪問、中斷響應(yīng)、DMA傳輸。它包括:串、并行口,鍵盤,文件系統(tǒng),SCSI,網(wǎng)絡(luò)等驅(qū)動程序;另外一種軟驅(qū)動呢?不需要直接對硬件就行操作。我認為他可以理解為它是在硬驅(qū)動之上的一層更為高級的驅(qū)動。我想學(xué)習(xí)的主要是軟驅(qū)動。

一般來說,設(shè)備驅(qū)動程序的任務(wù)主要有兩個:第一,接受來自用戶程序的讀寫請求,把用戶的數(shù)據(jù)傳送給設(shè)備,或把從設(shè)備接收到的數(shù)據(jù)傳送給用戶;第二,輪詢設(shè)備或處理來自設(shè)備的中斷請求,完成數(shù)據(jù)傳輸。

驅(qū)動程序的結(jié)構(gòu)

在這里,我主要介紹WDM的結(jié)構(gòu)。WDM(Windows driver module)是什么東西呢?在Windows98\95下面,也許你聽得最多的是VXD,我只知道VXD是一種驅(qū)動程序,和WDM差不多的東西。只是因為Windows2000是WindowsNT那條線過來的東西,要加上兩個主要的新功能:即插即用(Plug and Play)和電源管理(Power Menage),又不能用Windows98\95那一套,所以就搞出一個叫WDM這么個東西,來支持PNP和PM.。其實想想,現(xiàn)在的技術(shù)名詞還不是一般的多啊!總之wdm大家都叫它windows驅(qū)動程序模型

Windows2000里有叫即插即用管理器和I\O(此I\O非彼I\O端口)管理器的兩個東西。比如說我在機器上插了一張符合PCI規(guī)范的PCI卡。即插即用管理器會發(fā)現(xiàn)這張卡插在第N個插槽上,然后即插即用管理器會說它找到了這樣一張卡,它就去找有沒有現(xiàn)成的驅(qū)動程序,如果沒有找到,它會告訴我們,我找到了這樣一張卡,請你插入這張卡的驅(qū)動程序盤。好,我們就把驅(qū)動程序盤給它,即插即用管理器會去找驅(qū)動程序盤上的INF文件,找到后它會比較PCI卡上的標志和INF文件里的標志是否相同,如果相同,它就會依照INF文件里提供的路徑去找驅(qū)動程序,找到之后就可以交給I\O管理器,I\O管理器會裝載這個驅(qū)動程序。I\O管理器在做了一些接口的工作后,即插即用管理器會先分配好相關(guān)的資源給PCI卡,比如說I\O端口空間、內(nèi)存空間和中斷向量,然后告訴這張卡的驅(qū)動程序,我給你分配了這些資源,你看怎么的。如果你沒有怎么的或不敢怎么的,那就趕快記下這些資源,以備后用。
    下面說I\O管理器這個東西。上面我們講到I\O管理器裝載這個驅(qū)動程序,驅(qū)動程序有一個大門,還有N多的小門。I\O管理器先從大門進去(因為I\O管理器只找得到大門,I\O管理器是不是很傻,NO,當然有它的道理,你別問我:I\O管理器怎么找到大門的?驅(qū)動程序無非就是一些文件,I\O管理器把這么些文件加載到系統(tǒng)中去),去找一樣?xùn)|西:進小門的地圖。我們要在大門進去的房間里放這張地圖(驅(qū)動程序都是我們造的,我們當然有驅(qū)動程序的地圖啦)。I\O管理器找到了地圖,就可以自由進出大小門了。———這些大小門說白了就是函數(shù)(不要問我函數(shù)是什么東東),小門的地圖就是函數(shù)的地址。I\O管理器知道了這些函數(shù)的地址,當然就可以調(diào)用這些函數(shù)啦。還有一個叫IRP的東西,中文名叫I\O請求包。我們這樣來理解它:在用戶的應(yīng)用程序這一端,要和驅(qū)動程序?qū)υ挘鼈冎g不是簡單的調(diào)用函數(shù)(至于為什么,我現(xiàn)在也不知道),應(yīng)用程序和驅(qū)動程序之間有I\O管理器隔著,應(yīng)用程序?qū)︱?qū)動程序的操作,首先由I\O管理器處理成一個包,這個包里面有應(yīng)用程序請求的操作內(nèi)容、傳送的數(shù)據(jù)等等一些東西,然后I\O管理器把這個包扔給驅(qū)動程序,驅(qū)動程序依照包里的請求,完成操作,把該回傳的數(shù)據(jù)放進包里,再把包扔還給I\O管理器,I\O管理器再把數(shù)據(jù)返回給應(yīng)用程序。——這里所說的包,就是IRP。
    這里說的只是WDM結(jié)構(gòu)的一部分,但是有了這一部分知識,其它部分就不難懂了。通過上面的介紹你看見了什么。你可以想象得出驅(qū)動程序是什么樣子的嗎?我是這樣想的。驅(qū)動程序好像就是一個函數(shù)庫,只不過在大門的地方放了一張地圖。而這個大門與地圖我們見到過嗎?好像有點像dll文件呢。在早些時候我學(xué)dll的時候,我就只會用dll來存放函數(shù)。

Feedback

# re: 驅(qū)動程序開發(fā)-概述  回復(fù)  更多評論   

2006-02-28 14:08 by 笑笑生
謝謝,我正需要一些快速入門的東西,不錯,收藏

# re: 驅(qū)動程序開發(fā)-概述  回復(fù)  更多評論   

2007-03-13 10:39 by 李維
太感謝了
希望版主能多分享一些文章喔^^

# re: 驅(qū)動程序開發(fā)-概述  回復(fù)  更多評論   

2007-03-23 10:21 by AaronZ
太簡單了,希望能深入。

# re: 驅(qū)動程序開發(fā)-概述  回復(fù)  更多評論   

2007-11-14 16:46 by 4kapple
說的很生動,很人性化~

# re: 驅(qū)動程序開發(fā)-概述  回復(fù)  更多評論   

2014-06-27 11:29 by 孫老師
你好,你同學(xué)里有難就業(yè)的嗎?
有這樣的同學(xué),請一定介紹到銳英源來學(xué)啊!
銳英源軟件開發(fā)培訓(xùn),全國性價比最高的軟件開發(fā)培訓(xùn)。
全面能力、綜合教材、海量源碼和因人施教,保證掌握工作能力,打開項目經(jīng)理和系統(tǒng)分析之門。
銳英源有大量聯(lián)系就業(yè)企業(yè),在培訓(xùn)時讓你獨立完成項目,培養(yǎng)獨立表達能力;
讓你帶作品去面試,這樣會讓企業(yè)求著你去工作。
鄭州本地朋友可直接來鄭州實訓(xùn)基地學(xué)習(xí),外地學(xué)員可來鄭州學(xué)習(xí),也可網(wǎng)絡(luò)遠程教學(xué)掌握工作能力。
銳英源是首個承諾網(wǎng)絡(luò)遠程教學(xué)掌握工作能力的機構(gòu)。編程思維啟蒙能增強自學(xué)理解能力和自制能力,結(jié)合在線督促,保證效果。
銳英源主頁www.wisestudy.cn
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美在线免费播放| 欧美综合国产精品久久丁香| 国产精品jizz在线观看美国| 女女同性精品视频| 黑人一区二区| 久久成年人视频| 欧美在线一级va免费观看| 国产精品国产a级| 中日韩美女免费视频网址在线观看 | 欧美中文字幕久久| 国产精品入口夜色视频大尺度 | 欧美一区二区三区四区夜夜大片| 亚洲专区在线视频| 久久国产精品99国产精| 久久精品99久久香蕉国产色戒 | 午夜精品久久久久久99热| 亚洲欧美日韩中文视频| 国产精品视频九色porn| 亚洲一区欧美| 久久久久99| 亚洲国产成人午夜在线一区| 嫩草国产精品入口| 亚洲精选视频在线| 午夜精品区一区二区三| 国产亚洲精久久久久久| 另类酷文…触手系列精品集v1小说| 欧美韩国在线| 亚洲视频日本| 国产日韩欧美精品一区| 久久久人人人| 亚洲精品乱码久久久久久日本蜜臀| 日韩亚洲国产精品| 国产精品久久久久久久app | 免费成人美女女| 亚洲精品美女在线观看| 欧美日韩一区二区三区免费看 | 亚洲电影第1页| 宅男噜噜噜66一区二区| 国产日韩欧美一区二区三区四区| 久久久久久久综合狠狠综合| 亚洲国产91| 午夜精品久久久久久久99黑人| 国产亚洲激情视频在线| 欧美v日韩v国产v| 欧美体内she精视频| 中文在线资源观看网站视频免费不卡 | 亚洲国产日韩欧美综合久久| 亚洲一区二区三区涩| 国产亚洲综合精品| 欧美大片一区二区三区| 亚洲欧美日韩国产一区二区三区| 免费不卡视频| 亚洲欧美在线看| 亚洲高清视频在线观看| 国产精品二区在线| 美女成人午夜| 午夜精品久久久久| 亚洲麻豆视频| 欧美国产日韩一区二区| 欧美一区二区三区视频在线观看| 亚洲欧洲精品天堂一级| 国产日韩欧美一区二区三区四区| 欧美激情按摩| 久久久国产精品一区二区三区| 日韩亚洲欧美一区| 欧美h视频在线| 欧美在线观看一区| 在线亚洲免费| 亚洲欧洲精品一区| 一区二区亚洲精品国产| 国产精品一二三四| 欧美日韩一区综合| 欧美成年人视频网站欧美| 亚洲精品免费看| 国产真实久久| 国产精品国色综合久久| 女仆av观看一区| 欧美一区二区三区免费在线看| 亚洲伦伦在线| 亚洲国产欧美日韩| 老色鬼精品视频在线观看播放| 亚洲欧美综合一区| 宅男在线国产精品| 99视频精品在线| 亚洲日本aⅴ片在线观看香蕉| 国产区亚洲区欧美区| 欧美女主播在线| 欧美激情视频网站| 欧美成人免费小视频| 久久亚洲国产成人| 久久精品女人| 久久精品国产69国产精品亚洲| 亚洲欧美日韩一区在线| 中文国产成人精品| 一区二区三区欧美在线观看| 日韩一级在线| 99热精品在线观看| 一区二区免费在线视频| 日韩一级大片在线| 夜夜嗨一区二区三区| 日韩视频在线永久播放| 日韩视频第一页| 一本不卡影院| 亚洲一区二区三区视频| 亚洲一区二区精品在线| 中国日韩欧美久久久久久久久| 一本色道久久综合狠狠躁的推荐| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 欧美本精品男人aⅴ天堂| 久久婷婷蜜乳一本欲蜜臀| 久久久久久91香蕉国产| 老鸭窝毛片一区二区三区| 免费亚洲一区| 欧美精品日韩综合在线| 欧美日韩一区二区免费在线观看| 国产精品成人免费精品自在线观看 | 欧美韩日视频| 91久久在线观看| 一区二区国产日产| 亚洲欧美精品在线| 久久精品毛片| 欧美国产三级| 国产精品高精视频免费| 国产午夜精品视频免费不卡69堂| 国语自产精品视频在线看| 亚洲国产精品久久人人爱蜜臀| 99精品欧美一区二区三区| 亚洲自拍都市欧美小说| 久久精品国产第一区二区三区最新章节| 久久免费国产精品1| 欧美电影在线观看| 一本久道久久久| 欧美在线影院| 欧美精品二区三区四区免费看视频| 国产精品va在线播放我和闺蜜| 国产亚洲欧美在线| 亚洲精品影视在线观看| 欧美激情bt| 国产精品普通话对白| 激情国产一区| 一区二区免费在线观看| 久久精品国产69国产精品亚洲| 女人香蕉久久**毛片精品| 亚洲精品少妇30p| 午夜久久黄色| 欧美精品二区三区四区免费看视频| 国产精品永久免费视频| 亚洲激情亚洲| 久久国产精品99久久久久久老狼 | 国产精品美女黄网| 免费在线一区二区| 欧美视频在线一区二区三区| 国内精品视频在线观看| 一区二区欧美国产| 久久这里只有精品视频首页| 日韩天天综合| 久色成人在线| 国产欧美日韩一级| 日韩午夜中文字幕| 老司机亚洲精品| 亚洲深夜福利网站| 欧美成人午夜激情| 狠狠狠色丁香婷婷综合激情| 亚洲一区在线播放| 亚洲国产成人在线播放| 欧美在线免费视屏| 国产精品久久久久久av福利软件 | 欧美色视频在线| 亚洲二区在线视频| 欧美怡红院视频| 99国产精品99久久久久久| 久久久午夜视频| 国产日韩精品电影| 亚洲免费影视| 91久久在线观看| 蜜桃精品久久久久久久免费影院| 国产一区二区福利| 午夜欧美视频| 在线亚洲观看| 欧美日韩一区三区四区| 亚洲精选成人| 久久精品30| 国产视频一区在线| 午夜视频一区在线观看| 99在线精品免费视频九九视| 免费av成人在线| 亚洲大黄网站| 欧美xxx在线观看| 久久精品国产欧美激情| 国产一区二区三区在线观看精品| 欧美一级视频免费在线观看| 久久久久久亚洲综合影院红桃| 99一区二区| 欧美日韩亚洲一区二区三区四区| 亚洲精品一区二区三区婷婷月 | 亚洲欧美在线视频观看| 中日韩美女免费视频网址在线观看| 欧美日韩激情小视频| 在线视频欧美日韩精品| 亚洲日本无吗高清不卡|