日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁(yè)編程開發(fā)其它知識(shí) → 驅(qū)動(dòng)程序調(diào)用:UMDF驅(qū)動(dòng)程序開發(fā)教程

      驅(qū)動(dòng)程序調(diào)用:UMDF驅(qū)動(dòng)程序開發(fā)教程

      相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2012/3/25 22:24:17字體大小:A-A+

      作者:西西點(diǎn)擊:73次評(píng)論:0次標(biāo)簽: 驅(qū)動(dòng)程序

      • 類型:硬件驅(qū)動(dòng)大。1.8M語(yǔ)言:中文 評(píng)分:6.3
      • 標(biāo)簽:
      立即下載

      最近的一個(gè)開發(fā)任務(wù)中,我的應(yīng)用程序需要調(diào)用驅(qū)動(dòng)程序去做一些事情,考慮到應(yīng)用的情形,計(jì)劃使用一個(gè)UMDF驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)。雖然是一名老程序員了,但對(duì)于Windows桌面系統(tǒng)的開發(fā)還是頭一次做,對(duì)于UMDF驅(qū)動(dòng)更是連名字都沒(méi)有聽過(guò)。同時(shí)時(shí)間比較緊,也不可能從頭去查幫助,讀文檔,只能以最快的方式來(lái)做。前后共計(jì)在這個(gè)驅(qū)動(dòng)上花了不到兩天的時(shí)間,才將UMDF驅(qū)動(dòng)開發(fā)的大概流程弄懂,以下做以記錄,但愿對(duì)于后來(lái)者有所幫助。

       基本過(guò)程

      既然為了趕時(shí)間,我這里自然不會(huì)去分析原理,只能涉及按照這種方法可以快速介入,在自己不熟悉的領(lǐng)域里快速開發(fā)。遇到難題還是得仔細(xì)閱讀幫助文檔,或者請(qǐng)教高手。

       1,  首先使用VS按照UMDF驅(qū)動(dòng)的向?qū)?chuàng)建一個(gè)新的驅(qū)動(dòng),創(chuàng)建過(guò)程不再細(xì)述,按照向?qū)У牟襟E執(zhí)行即可。這樣我們就有了一個(gè)驅(qū)動(dòng)的基本框架。它應(yīng)該可以編譯通過(guò)并安裝,如果在編譯和安裝過(guò)程中有問(wèn)題,請(qǐng)先檢查VS的開發(fā)環(huán)境。

      2,  添加自己的代碼。這樣創(chuàng)建的驅(qū)動(dòng)其Read/Write函數(shù)是否有,及如何調(diào)用我還真沒(méi)有明白,我只知道IoControl函數(shù),及添加相應(yīng)的代碼。

       在ioQueue.cpp中的找到CMyIoQueue::OnDeviceIoControl函數(shù),它就是上層調(diào)用DeviceoControl時(shí),會(huì)調(diào)用到驅(qū)動(dòng)的函數(shù),即驅(qū)動(dòng)的IoControl入口。這個(gè)函數(shù)有5個(gè)參數(shù):

      __in IWDFIoRequest *FxRequest,我們可以訪問(wèn)的數(shù)據(jù)結(jié)構(gòu)都在它里面。

      __in ULONG ControlCode,是控制碼,我們應(yīng)該根據(jù)不同的控制碼去執(zhí)行對(duì)應(yīng)的代碼。

               其它的參數(shù)都沒(méi)有用。

               分別得到輸出和輸出Buffer:

                        FxRequest->GetInputMemory( &pInMem );

                        FxRequest->GetOutputMemory( &pOutMem );

               將輸入Buffer拷貝到本地的一段內(nèi)存中,我們不能直接訪問(wèn) pInMem指向的內(nèi)存,只能將其拷出來(lái)使用(是不是能讀不記得了,誰(shuí)有興趣可以試一下)

                         hr=pInMem->CopyToBuffer(0x0, &localBuffer, dwSize );

               本地做完處理以后,將要傳出去的數(shù)據(jù)拷貝到pOutMem.

                         hr=pOutMem->CopyFromBuffer(0x0, &localOut, sizeof(localOut));

               最后通知調(diào)用者給它傳出了多少數(shù)據(jù):

                         FxRequest->CompleteWithInformation( hr, sizeof(localOut));

       3,   注意事項(xiàng)

      1,  要傳出數(shù)據(jù)一定要使用OutMemory,當(dāng)然寫這點(diǎn)文字時(shí)我用的是VS11 Beta,以后的版本是否會(huì)有改變,還需要留意,這個(gè)花了我挺長(zhǎng)時(shí)間,一開始,我一直想把數(shù)據(jù)用InoutMemory傳回,但上層總得不到。后來(lái)想到可能它就設(shè)計(jì)成了不能通過(guò)InputMemory傳數(shù)據(jù)出去。

      2,  Complete是一定要調(diào)的,有兩個(gè)函數(shù),Complete和CompleteWithInformation,前者只是表示驅(qū)動(dòng)中的過(guò)程已經(jīng)做完,后者可以同時(shí)給出我們?cè)贠utMemory中放了多少字節(jié)的數(shù)據(jù)。如果不調(diào)用這個(gè)函數(shù),上層調(diào)用DeviceIoControl時(shí),就會(huì)失敗,GetLastError會(huì)說(shuō)是操作被Pending。

      3,  因微軟的例子中沒(méi)有給出IO操作的代碼,我當(dāng)時(shí)來(lái)網(wǎng)上到處搜別人寫的例子。當(dāng)時(shí)看到有人會(huì)將FxRequest Release,如果將它Release,就會(huì)引起驅(qū)動(dòng)程序出錯(cuò),而不能再使用。由此我想到:1,不能輕易相信別人的代碼,尤其是網(wǎng)頁(yè)上(包括我的,哈哈)。2,一定要時(shí)刻注意自己加入新的代碼以后程序有什么樣的新的行為,一定要及時(shí)發(fā)現(xiàn)異常,以及時(shí)介定是哪次加入的代碼有問(wèn)題,這樣才會(huì)少浪費(fèi)時(shí)間。

      4,  關(guān)于運(yùn)行權(quán)限的一些概念:

      每個(gè)UMDF驅(qū)動(dòng)都有一個(gè)專門的進(jìn)程來(lái)加載它(程序名忘記了),其運(yùn)行權(quán)限是Local Service。所以有些需要更高運(yùn)行權(quán)限(如Admin)的函數(shù)無(wú)法在UMDF驅(qū)動(dòng)中使用。

        萬(wàn)能顯卡
        (240)萬(wàn)能顯卡
        萬(wàn)能顯卡驅(qū)動(dòng)適用于所有顯卡安裝驅(qū)動(dòng)所用,稱之為萬(wàn)能顯卡驅(qū)動(dòng)。顯卡驅(qū)動(dòng)是硬件所對(duì)應(yīng)的軟件,你裝電腦時(shí)那幫你裝電腦的人不是給了你很多碟子的嗎,那些就是驅(qū)動(dòng)程序,其中必然有一張是顯卡的驅(qū)動(dòng)程序。先要確定你的顯卡什么牌子型號(hào)的,如果記不得了,就打開機(jī)箱看那個(gè)豎插在主板上的較大板子一般顯卡有很大的散熱片或風(fēng)扇上的型號(hào)品牌。如果是集成的顯卡在主板上看不到前面說(shuō)的那樣的電路板,就看主板上的型號(hào)品牌,記下來(lái)。但是...更多>>

        相關(guān)評(píng)論

        閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過(guò)難過(guò)
        • 5 囧
        • 3 圍觀圍觀
        • 2 無(wú)聊無(wú)聊

        熱門評(píng)論

        最新評(píng)論

        發(fā)表評(píng)論 查看所有評(píng)論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)