Windows設(shè)備驅(qū)動(dòng)程序編寫(xiě)時(shí)的主要問(wèn)題及解決方案
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++教程
評(píng)論