CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

tc2.0编译程序出错:_inpw未定义,如何处理?

楼主wdsoft(wdsoft)2000-09-15 15:23:00 在 VC/MFC / 基础类 提问

/*  
  **   DUG_IDE   :   Provides   IDE   disk   info   on   both   drives   in   the   system  
  **                       Version   1.0  
  **  
  **   Copyright   (c)   12   Jan   1993   by   Doug   Merrett   -   All   rights   reserved  
  **  
  **   Postal   Address:   PO   Box   432  
  **                                   Stones   Corner     Q     4120  
  **                                   Australia  
  **  
  **   Email   Address:     dcm@mincom.oz.au  
  **  
  **   You   may   distribute   freely,   but   no   modifications   without   mailing   me   a   copy.  
  **   No   profit   can   be   made   for   distribution.     Blah   Blah   Blah   etc.  
  */  
   
  /*   Used   by   JPI   for   clrscr   */  
  #define   _JPI_WIN_  
   
   
  #include   <stdlib.h>  
  #include   <dos.h>  
  #include   <stdio.h>  
  #include   <conio.h>  
  #include   <bios.h>  
   
   
  char   *getascii   (unsigned   int   in_data   [],   int   off_start,   int   off_end);  
   
  void   main   (void)  
  {  
      unsigned   int   dd   [256];   /*   DiskData   */  
      unsigned   int   dd_off;       /*   DiskData   offset   */  
      unsigned   int   loop;           /*   Loop   variable   */  
      int   num_drv;                       /*   Number   of   Hard   disks   */  
   
      union   REGS   registers;     /*   Used   for   Interrupt   for   BIOS   data   */  
   
   
      unsigned   int   bios_cyl   [2],   bios_head   [2],   bios_sec   [2];     /*   Cylinders,   Heads,   Sectors   */  
   
   
      clrscr   ();  
   
      fprintf   (stderr,   "**   DUG_IDE   :   Provides   IDE   disk   info   on   both   drives   in   the   system\n");  
      fprintf   (stderr,   "**   Version   1.0\n");  
      fprintf   (stderr,   "**\n");  
      fprintf   (stderr,   "**   Copyright   (c)   12   Jan   1993   by   Doug   Merrett   -   All   rights   reserved\n");  
      fprintf   (stderr,   "**\n");  
      fprintf   (stderr,   "**   Postal   Address:   PO   Box   432\n");  
      fprintf   (stderr,   "**                                   Stones   Corner     Q     4120\n");  
      fprintf   (stderr,   "**                                   Australia\n");  
      fprintf   (stderr,   "**\n");  
      fprintf   (stderr,   "**   Email   Address:     dcm@mincom.oz.au\n");  
      fprintf   (stderr,   "**\n");  
      fprintf   (stderr,   "**   You   may   distribute   freely,   but   no   modifications   without   mailing   me   a   copy.\n");  
      fprintf   (stderr,   "**   No   profit   can   be   made   for   distribution.     Blah   Blah   Blah   etc.\n\n");  
      fprintf   (stderr,   "Press   any   key   to   accept   above   limitations");  
      getch   ();  
   
      /*   How   many   disk   drives   &   parameters   */  
      num_drv   =   peekb   (0x40,   0x75);     /*   BIOS   Data   area,   Number   of   Hard   disks   */  
                                                                    /*   Byte   at   Segment   40H   Offset   75H   */  
   
      for   (loop   =   0;   loop   <   num_drv;   loop++)     /*   Loop   through   drives   */  
          {  
              /*   Get   IDE   Drive   info   */  
   
              while   (inp   (0x1F7)   !=   0x50)     /*   Wait   for   controller   not   busy   */  
                  ;  
   
              outp   (0x1F6,   (loop   ==   0   ?   0xA0   :   0xB0));   /*   Get   first/second   drive   */  
   
              outp   (0x1F7,   0xEC);                     /*   Get   drive   info   data   */  
   
              while   (inp   (0x1F7)   !=   0x58)     /*   Wait   for   data   ready   */  
                  ;  
   
              for   (dd_off   =   0;   dd_off   !=   256;   dd_off++)   /*   Read   "sector"   */  
                  dd   [dd_off]   =   inpw   (0x1F0);  
   
              /*   Get   BIOS   drive   info   */  
              registers.h.ah   =   0x8;                         /*   Get   drive   info   */  
              registers.h.dl   =   0x80   +   loop;         /*   Drive   is   80H   for   Disk   0,   81H   for   Disk   1   */  
              int86   (0x13,   &registers,   &registers);  
              if   (!   registers.x.cflag)       /*   All   OK   if   carry   not   set   */  
                  {  
                      bios_head   [loop]   =   registers.h.dh   +   1;   /*   Heads   are   from   0   */  
                      bios_sec   [loop]   =   registers.h.cl   &   0x3F;   /*   sec   is   bits   5   -   0   */  
                      bios_cyl   [loop]   =   ((registers.h.cl   &   0xC0)   <<   2)   +   registers.h.ch   +   2;   /*   +1   because   starts   from   0   and   +1   for   FDISK   leaving   one   out   */  
                  }  
   
              clrscr   ();  
   
              fprintf   (stdout,   "DRIVE   %d:\n",   loop);  
              fprintf   (stdout,   "Model   Number______________________:   %s\n",   getascii   (dd,   27,   46));  
              fprintf   (stdout,   "Serial   Number_____________________:   %s\n",   getascii   (dd,   10,   19));  
              fprintf   (stdout,   "Controller   Revision   Number________:   %s\n\n",   getascii   (dd,   23,   26));  
              fprintf   (stdout,   "Able   to   do   Double   Word   Transfer___:   %6s\n",   (dd   [48]   ==   0   ?   "No"   :   "Yes"));  
              fprintf   (stdout,   "Controller   type___________________:       %04X\n",   dd   [20]);  
              fprintf   (stdout,   "Controller   buffer   size   (bytes)____:   %6u\n",   dd   [21]   *   512);  
              fprintf   (stdout,   "Number   of   ECC   bytes   transferred___:   %6u\n",   dd   [22]);  
              fprintf   (stdout,   "Number   of   sectors   per   interrupt___:   %6u\n\n",   dd   [47]);  
              fprintf   (stdout,   "Hard   Disk   Reports\n");  
              fprintf   (stdout,   "Number   of   Cylinders   (Fixed)_______:   %6u\n",   dd   [1]);  
              fprintf   (stdout,   "Number   of   Heads___________________:   %6u\n",   dd   [3]);  
              fprintf   (stdout,   "Number   of   Sectors   per   Track_______:   %6u\n\n",   dd   [6]);  
              fprintf   (stdout,   "BIOS   Reports\n");  
              fprintf   (stdout,   "Number   of   Cylinders_______________:   %6u\n",   bios_cyl   [loop]);  
              fprintf   (stdout,   "Number   of   Heads___________________:   %6u\n",   bios_head   [loop]);  
              fprintf   (stdout,   "Number   of   Sectors   per   Track_______:   %6u\n\n",   bios_sec   [loop]);  
   
              if   (!   loop)  
                  {  
                      fprintf   (stdout,   "Press   a   key");  
                      getch   ();  
                  }  
        }  
  }  
   
  char   *getascii   (unsigned   int   in_data   [],   int   off_start,   int   off_end)  
  {  
      static   char   ret_val   [255];  
      int   loop,   loop1;  
   
      for   (loop   =   off_start,   loop1   =   0;   loop   <=   off_end;   loop++)  
          {  
              ret_val   [loop1++]   =   (char)   (in_data   [loop]   /   256);     /*   Get   High   byte   */  
              ret_val   [loop1++]   =   (char)   (in_data   [loop]   %   256);     /*   Get   Low   byte   */  
          }  
      ret_val   [loop1]   =   '\0';     /*   Make   sure   it   ends   in   a   NULL   character   */  
      return   (ret_val);  
  } 问题点数:50、回复次数:3Top

1 楼tchaikov()回复于 2000-09-15 18:11:00 得分 50

用   Borland   C++   3.1就可以了。  
  tc2.0   的dos.h中没有inpw.Top

2 楼haitian99()回复于 2000-09-15 18:42:00 得分 0

TC2.0   ,   BC++3.1   中好象用函数  
  inport()  
  inportb()  
  好几年不用了,你查帮助看一下。  
   
  Top

3 楼tchaikov()回复于 2000-09-15 19:01:00 得分 0

to   haitian99  
  inportb   和   inp是一样的,但inportw只有bc3.1中才有。Top

相关问题

  • 编译程序
  • vc编译 程序
  • foxbase的反编译程序
  • 不能编译程序
  • c/c++的编译程序
  • 紧急求助!关于编译程序!!
  • 能否将文件编译程序中。
  • 急!我的Delphi6无法编译程序?!
  • 高分求pb6.5的反编译程序
  • 编译程序老提示login incorrect!

关键词

  • bios
  • stderr
  • fprintf
  • blah
  • disks
  • distribution
  • loop
  • drives
  • address
  • include

得分解答快速导航

  • 帖主:wdsoft
  • tchaikov

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo