本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[MSC]_dos_setvect() のサンプルプログラム(98用)

文書番号: 402037

最終更新日: 2004/04/27


この資料は以下の製品について記述したものです。


概要

この資料は、 _dos_setvect 関数のサンプルプログラムです。

サンプルをご覧になる前に

この2つのサンプルプログラムは、関数の使用方法の一例として提示するもので、
十分にテストされた信頼されるものではありません。個人の学習のための使用、
修正、分割については、自由に行っていただけますが、このサンプルに関しての、
サポート、説明等は一切お受けしかねますのであらかじめご了承ください。ま
た、このプログラムを実行し発生した、いかなる障害も、弊社では責任を負いま
せん。
  /*
  *   このプログラムは、NEC PC-9801 シリーズの [Stop] キーの割り込みベクタを
  *   書き換えるサンプルです。
  */
  #include <dos.h>
  #include <stdio.h>
  void main(void);
  void (interrupt far *oldst)(void);  /* 保存用 */
  void  interrupt far  newst (void);  /* 変更する関数 */
  int far volatile keyflg;
  void main(void)
     int cnt=0;
     oldst = _dos_getvect( 6 );        /* [Stop] キーの割り込みアドレスを保存*/
     _dos_setvect( 6, newst );         /* ベクタ 6 番に newst 関数を割り当てる*/
     while( cnt<10 )                  /* [Stop] キーが 10 回押されるまでループ*/
        if ( keyflg==1 )
           printf("[STOP]");
           cnt++;
            keyflg = 0;
     _dos_setvect( 6, oldst);          /* 割り込みアドレスを元に戻す */
  /* 割り込み関数の実体 */
  /*  newst 関数の中では、MS-DOS コールを使用しないものであれば利用できます。
  *   MS-DOS コール (INT21h) を利用できないのは、INT21h を実行中に STOP キーをタイプ
  *   されると、2重コールとなり、システムが暴走するためです
  */
  void interrupt far newst(void)
     keyflg = 1;
  /*
  *   このプログラムは、NEC PC-9801 シリーズの [Copy] キーの割り込みベクタを
  *   書き換えるサンプルです。
  */
  #include <dos.h>
  #include <stdio.h>
  void main(void);
  void (interrupt far *oldcopy)(void);  /* 保存用 */
  void  interrupt far  newcopy (void);  /* 変更する関数 */
  int far volatile keyflag;
  void main(void)
     int cnt=0;
     oldcopy = _dos_getvect( 5 );   /* [Copy] キーの割り込みアドレスを保存 */
     _dos_setvect( 5, newcopy );    /* ベクタ 5 番に newcopy 関数を割り当てる */
     while( cnt<10 )                /* [Copy] キーが 10 回押されるまでループ */
         if ( keyflag==1 )
            keyflag = 0;
            printf("[COPY]");
            cnt++;
     _dos_setvect( 5, oldcopy);        /* 割り込みアドレスを元に戻す */
  /* 割り込み関数の実体 */
  /*  newcopy 関数の中では、MS-DOS コールを使用しないものであれば利用できます。
  *   MS-DOS コール (INT21h) を利用できないのは、INT21h を実行中に COPY キーをタ
  *   イプされると、2重コールとなり、システムが暴走するためです
  */
  void interrupt far newcopy(void)
     keyflag = 1;
  }

詳細

  • Visual C++ は、米国 Microsoft Corporation の商標です。

Keywords: C6 C7 KBHOWTO QC20 VC10 VC15 KB402037
Technology: kbAudDeveloper kbCCompPDS600DOS kbCCompSearch kbQC200 kbvc150 kbVCsearch kbZNotKeyword3 kbZNotKeyword8

inserted by FC2 system