<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > PCI驅動(dòng)程序開(kāi)發(fā)實(shí)例

PCI驅動(dòng)程序開(kāi)發(fā)實(shí)例

作者: 時(shí)間:2014-02-21 來(lái)源:網(wǎng)絡(luò ) 收藏

  3.1 打開(kāi)設備

  在應用程序中調用系統提供的函數CreateFile()。如果系統根據設備名確實(shí)檢測到設備并成功打開(kāi)了這個(gè)設備,則返回一個(gè)指向這個(gè)設備的有效句柄;如果調用失敗,則返回一個(gè)錯誤信息。

  3.2 讀/寫(xiě)設備

  讀/寫(xiě)設備包括讀/寫(xiě)設備的配置空間、讀/寫(xiě)設備的非配置空間,其中,非配置空間包括I/O空間、存儲空間。

  設備被打開(kāi)以后,應用程序就調用DeviceloCon-trol()函數來(lái)達到訪(fǎng)問(wèn)設備的目的。DeviceIoControl()函數有8個(gè)參數,其中第3個(gè)參數是應用程序傳遞給的數據緩沖區地址,在這個(gè)數據緩沖區存放的是應用程序要讀寫(xiě)的設備的空間、偏移量、長(cháng)度,這些都需要在應用程序中配置好。

  這個(gè)調用由I/O系統服務(wù)接收。I/O管理器從這個(gè)請求構造一個(gè)合適的I/O請求包(IRP)。在最簡(jiǎn)單的情況下,I/O管理器只是把IRP傳遞給一個(gè)設備,這個(gè)調用硬件,并完成IRP的處理。I/O管理器把數據和結果返回給Win 32和用戶(hù)應用程序?,F在一個(gè)分層的設備驅動(dòng)程序棧是很常見(jiàn)的。每個(gè)驅動(dòng)程序把該請求劃分為更簡(jiǎn)單的請求。高層次的驅動(dòng)程序調用低層次的驅動(dòng)程序,最后,最低層的驅動(dòng)程序與硬件直接打交道完成用戶(hù)的請求。I/O管理器把數據和結果返回給Win 32和用戶(hù)應用程序。設備程序調用如圖3所示。

  當應用程序讀/寫(xiě)設備時(shí),驅動(dòng)程序工作的流程圖如圖4所示。

         

  首先,獲取當前IRP棧單元的指針;然后再讀取I/O控制代碼,判斷應用程序想達到什么樣的目的:是讀/寫(xiě)配置空間,還是讀/寫(xiě)非配置空間,然后再調用相應的處理程序。

  4 結 語(yǔ)

  這里采用微軟的驅動(dòng)程序開(kāi)發(fā)包Device Driver Kit(DDK)是因為它是其他幾種工具的基礎,它要求開(kāi)發(fā)人員深刻了解驅動(dòng)底層,雖然不易掌握,但開(kāi)發(fā)出來(lái)的驅動(dòng)程序通用性好,兼容性強。板卡與PC機的通信速度得到了很大的提高。


上一頁(yè) 1 2 3 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>