PCI總線數(shù)據(jù)輸出板驅(qū)動(dòng)程序的開發(fā)
pOutBuffer[0]= m_MemoryRange1.inb(ioOutSize-1);
本文引用地址:http://www.ex-cimer.com/article/265056.htm//讀取一個(gè)字節(jié)數(shù)據(jù)
I.Information()=1;
return status;
}
NTSTATUS PCI_DADevice::PCI_DA_IOCTL_Write_Handler(KIrp I)
{
NTSTATUS status=STATUS_SUCCESS;
//得到IOCTL緩沖區(qū)指針
PUCHAR pInBuffer=(PUCHAR) I.IoctlBuffer ();
//輸入緩沖區(qū)大小
ULONG ioInSize=I.IoctlInputBufferSize();
//將數(shù)據(jù)寫入偏移地址為n-1的存儲(chǔ)單元
m_MemoryRange1.outb
(ioInSize-1,pInBuffer[0]);
//寫入大小為一個(gè)字節(jié)
I.Information()=1;
return status;
}
編譯驅(qū)動(dòng)程序,生成一個(gè).inf文件和一個(gè).sys文件,這就是需要安裝的驅(qū)動(dòng)程序文件。編譯無錯(cuò)誤,就可以安裝調(diào)試驅(qū)動(dòng)程序了。
5 安裝調(diào)試驅(qū)動(dòng)程序
插入自己設(shè)計(jì)的PCI板卡,重新啟動(dòng)計(jì)算機(jī),出現(xiàn)安裝新硬件向?qū)?。安裝已經(jīng)生成的.inf文件和.sys文件。安裝后,查看pci設(shè)備的資源,若與自己硬件設(shè)置的資源空間相同,則設(shè)備驅(qū)動(dòng)安裝成功。
用Windows自帶的命令提示符,打開驅(qū)動(dòng)程序框架自帶的test應(yīng)用程序,測(cè)試通過驅(qū)動(dòng)程序讀寫數(shù)據(jù)。若讀取的和寫入的數(shù)據(jù)一致,則驅(qū)動(dòng)程序開發(fā)成功。
結(jié)束語
本文以一種基于PCI總線的D/A數(shù)據(jù)輸出板卡為例,介紹了在Windows 2000/XP下用DriverStudio開發(fā)PCI總線WDM驅(qū)動(dòng)程序的基本方法,詳細(xì)敘述了應(yīng)用程序和驅(qū)動(dòng)程序之間的通信機(jī)制和硬件訪問方法;針對(duì)板卡的硬件結(jié)構(gòu)和功能用途,介紹了PCI9052總線控制器PCI配置寄存器和局部配置寄存器地址配置的具體方法;給出了利用安裝新硬件向?qū)О惭b驅(qū)動(dòng)程序的方法,實(shí)現(xiàn)了上位機(jī)和數(shù)據(jù)輸出板卡的通信。
c++相關(guān)文章:c++教程
評(píng)論