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