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