• <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>
            aurain
            技術(shù)文摘
            posts - 137,  comments - 268,  trackbacks - 0

            Windows 操作系統(tǒng)家族支持三種數(shù)據(jù)傳輸機(jī)制:

            l         緩存IOBuffered I/O)在內(nèi)核模式上操作對用戶數(shù)據(jù)的拷貝

            l         直接IODirect I/O)通過內(nèi)存描述元列表(MDL, Memory Descriptor List)以及內(nèi)核模式的指針直接訪問用戶數(shù)據(jù)

            l         非上述方法IOMethod neither I/O,既非緩存,也非直接IO)通過用戶模式的指針訪問用戶數(shù)據(jù)

            對于標(biāo)準(zhǔn)的IO 請求,例如IRP_MJ_READ IRP_MJ_WRITE,由驅(qū)動在設(shè)備剛創(chuàng)建后,馬上通過修改DeviceObject->Flags 域的值來指定支持那一種傳輸機(jī)制。

            緩存IO

            為了以緩存IO 的方式接收讀、寫的請求,驅(qū)動會在初始化時在DeviceObject->Flags 域上設(shè)置DO_BUFFERED_IO標(biāo)志。當(dāng)驅(qū)動收到了一個緩存IO 的請求,在特定的Irp->AssociatedIrp.SystemBuffer域中會放有驅(qū)動應(yīng)該操作的內(nèi)核模式緩沖區(qū)的地址。IO管理
            器在進(jìn)行讀請求時將數(shù)據(jù)由內(nèi)核模式緩沖區(qū)拷貝到用戶模式緩沖區(qū),或者在進(jìn)行寫請求時從用戶模式緩沖區(qū)向內(nèi)核模式緩沖區(qū)拷貝數(shù)據(jù)。
            直接IO

            為了以直接IO的方式接收讀、寫請求,驅(qū)動會在初始化時在DeviceObject->Flags 域上設(shè)置DO_DIRECT_IO標(biāo)志。當(dāng)驅(qū)動接收到一個直接IO請求,特定的Irp->MdlAddress域中會放有一個用來描述請求緩沖區(qū)的MDL 的地址。這個MDL 列出了緩沖區(qū)的虛擬地址和尺寸,連同相應(yīng)緩沖區(qū)中的物理頁表(physical pages)。IO 管理器會在將請求發(fā)送給驅(qū)動之前鎖定這些物理頁,并在(請求)完成的過程中解鎖。驅(qū)動千萬不能使用MDL 中列舉的用戶模式緩沖區(qū)地址,而必須通過調(diào)用MmGetSystemAddressForMdlSafe 宏來得到一個內(nèi)核模式的地址。

            非緩存非直接IO
            為了接收非緩存非直接IO 的方式的請求,驅(qū)動初始化時在DeviceObject->Flags 域上既不設(shè)置DO_BUFFERED_IO 標(biāo)志,也不設(shè)置DO_DIRECT_IO 標(biāo)志。當(dāng)驅(qū)動接收到這樣的請求,相應(yīng)的Irp->UserBuffer 域會放有附屬于這個請求的數(shù)據(jù)地址。因為這個緩沖區(qū)在用戶地址空間上,驅(qū)動程序必須在用之前使相應(yīng)的地址合法化。驅(qū)動程序在try/except 塊里調(diào)用ProbeForRead 或者ProbeForWrite 函數(shù)來合法化特定的指針。驅(qū)動還必須完全在try/except塊里處理所有對這一緩沖區(qū)的訪問。

            另外,驅(qū)動還必須在應(yīng)用(manipulating)數(shù)據(jù)之前將它拷貝到池(the pool)或堆棧里一個安全的內(nèi)核模式地址。將數(shù)據(jù)拷貝到內(nèi)核模式緩沖區(qū)確保了用戶模式的調(diào)用者不會在驅(qū)動已經(jīng)合法化數(shù)據(jù)之后再修改它。

            posted on 2009-09-27 13:50 閱讀(1562) 評論(0)  編輯 收藏 引用 所屬分類: windows驅(qū)動

            <2009年9月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            常用鏈接

            留言簿(17)

            隨筆分類(138)

            隨筆檔案(137)

            網(wǎng)絡(luò)開發(fā)

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 497507
            • 排名 - 36

            最新隨筆

            最新評論

            閱讀排行榜

            評論排行榜

            久久亚洲国产成人影院| 亚洲国产精品无码久久98| 中文字幕久久波多野结衣av| 三级韩国一区久久二区综合| 国产高清国内精品福利99久久| 国产99精品久久| 久久精品免费一区二区三区| 久久精品亚洲精品国产色婷| 亚洲精品乱码久久久久久蜜桃不卡 | 热久久视久久精品18| 久久精品国产99国产精品| 精品久久久久久国产三级| 久久WWW免费人成—看片| 久久久噜噜噜久久| 亚洲?V乱码久久精品蜜桃| 久久亚洲国产最新网站| 99久久精品免费看国产一区二区三区| 久久受www免费人成_看片中文| 精品久久久久成人码免费动漫| 蜜桃麻豆WWW久久囤产精品| 欧美伊人久久大香线蕉综合| 婷婷久久久亚洲欧洲日产国码AV | 久久综合精品国产二区无码| 久久久一本精品99久久精品88| 久久99精品国产99久久| 国产综合免费精品久久久| 久久笫一福利免费导航| 精品久久无码中文字幕| 久久se这里只有精品| 亚洲精品乱码久久久久久自慰 | 久久精品中文无码资源站| 99久久精品国内| 久久久久久久久久免免费精品| 免费久久人人爽人人爽av| 久久电影网一区| 亚洲精品97久久中文字幕无码| 一本久久a久久精品vr综合| 91精品国产91久久久久久青草| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久美女人爽女人爽| 亚洲欧美一级久久精品|