Windows9x/NT及2000下中斷驅(qū)動(dòng)程序的統(tǒng)一化處理
Listen_Interupt.c源程序
//應(yīng)包含的頭文件
#include ″../../include/windrvr.h″
#include ″../../include/windrvr_int_thread.h″
#include
//設(shè)置自己的中斷號(hào),這個(gè)例子為中斷12
enum {MY_IRQ=12};
//建立全局的WinDriver句柄
HANDLE hWD;
//建立中斷結(jié)構(gòu)
WD_INTERRUPT Intrp;
Static char line[256];
//中斷處理過(guò)程,你可以用pData來(lái)傳遞從InterruptThreadEnable()得來(lái)的信息
VOID interrupt_handler(PVOID pData)
{
//在這里加入你要做的中斷處理代碼
printf(″截獲中斷的數(shù)目為%dn″,Intrp.dwCounter);
}
//主函數(shù)
int main()
{
WD_CARD_REGISTER cardReg;//建立插卡登記項(xiàng)目的一個(gè)實(shí)例
WD_VERSION verBuf;
hWD=WD_Open();//獲得驅(qū)動(dòng)程序的句柄
if(hWD==INVALID_HANDLE_VALUE)
{
printf(″打開(kāi)WINDRVR出現(xiàn)錯(cuò)誤!n″);
return0;
}
BZERO(verBuf);
WD_Version(hWD,verBuf);
if(verBuf.dwVer
{
printf(″WINDRVR版本不正確,這里需要的版本為:%dn″,WD_VER);
return0;
}
//初始化cardReg,這是程序的重要部分
BZERO(cardReg);
cardReg.Card.dwItems=1;
cardReg.Card.Item[0].item=ITEM_INTERRUPT;
cardReg.Card.Item[0].fNotSharable=True;
cardReg.Card.Item[0].I.Int.dwInterrupt=MY_IRQ;
cardReg.Card.Item[0].I.Int.dwOptions=1;
cardReg.fCheckLockOnly=True;
評(píng)論