關(guān) 閉

新聞中心

EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > Windows9x/NT及2000下中斷驅(qū)動(dòng)程序的統(tǒng)一化處理

Windows9x/NT及2000下中斷驅(qū)動(dòng)程序的統(tǒng)一化處理

作者: 時(shí)間:2009-05-13 來(lái)源:網(wǎng)絡(luò) 收藏

  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_IERRUPT Intrp;

  Static char line[256];

  //中斷處理過程,你可以用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(″打開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_IERRUPT;

  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;



關(guān)鍵詞: Windows 2000 NT 中斷

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉