<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > Windows設(shè)備驅(qū)動(dòng)程序編寫(xiě)時(shí)的主要問(wèn)題及解決方案

          Windows設(shè)備驅(qū)動(dòng)程序編寫(xiě)時(shí)的主要問(wèn)題及解決方案

          作者: 時(shí)間:2012-04-18 來(lái)源:網(wǎng)絡(luò) 收藏
          驅(qū)動(dòng)程序中,使用如下的語(yǔ)句就可以打開(kāi)文件。
          hVxD=CreateFile("\\.\PCIBIOS.VXD",0,0,0, CREATE-NEW,FILE-FLAG-DELETE-ON-CLOSE,0); 打開(kāi)設(shè)備文件后,調(diào)用DeviceIoControl函數(shù)就可以同設(shè)備驅(qū)動(dòng)程序交換數(shù)據(jù)了。
          完成硬件操作之后,可以調(diào)用CloseHandle(hVxD);關(guān)閉設(shè)備驅(qū)動(dòng)。
          這種調(diào)用方式也是Windows NT調(diào)用設(shè)備驅(qū)動(dòng)的標(biāo)準(zhǔn)方法。對(duì)于VxD來(lái)說(shuō)還有其它的調(diào)用方式,如DPMI方式,但采用DeviceIoControl的方法可以保證程序在Windows NT和Windows 9X下的兼容性,在兩個(gè)操作系統(tǒng)下,僅有CreateFile語(yǔ)句是不同的。
          4 設(shè)備驅(qū)動(dòng)的進(jìn)一步封裝 至此,完成了對(duì)驅(qū)動(dòng)程序的初步設(shè)計(jì)。但考慮到在上面調(diào)用設(shè)備驅(qū)動(dòng)時(shí)使用的DeviceIoControl函數(shù)仍是比較復(fù)雜的,程序也不太容易具有通用性。而且,在有些開(kāi)發(fā)工具中,如Visual Basic,不包括直接讀寫(xiě)I/O端口的語(yǔ)句,所以可以考慮根據(jù)不同軟件的需要對(duì)驅(qū)動(dòng)程序進(jìn)行不同的封裝。目前,我們實(shí)現(xiàn)了以DLL、ActiveX、VCL和C++類庫(kù)進(jìn)行封裝。DLL可以在大多數(shù)軟件環(huán)境中進(jìn)行調(diào)用。ActiveX可以在Visual Basic等可視編程環(huán)境中使用。VCL可以在Delphi和C++ Builder中使用??紤]到許多用戶使用Visual C++,所以也提供了C++類庫(kù)方式。
          參考文獻(xiàn)
          1 馬衛(wèi)國(guó),何佩琨.通用高速PCI總線目標(biāo)模塊的設(shè)計(jì).電子技術(shù)應(yīng)用,1999;25(1)
          2 Art Baker.Windows NT設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)指南.北京:機(jī)械工業(yè)出版社,1997
          3 AMCC S5933 PCI Controller Data Book.Applied Micro Circuits Corporation,1996 ? (收稿日期:1999-06-16)

          模擬電路文章專題:模擬電路基礎(chǔ)

          c++相關(guān)文章:c++教程



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

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();