⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pci.cpp

📁 一个读取PCI配置空间的TOOL (在DOS下OR WIN 98)
💻 CPP
字号:

#include<stdio.h>
#include<dos.h>
#include<process.h>
#include<conio.h>
#define addc 0cf8h
int key;//vary
void point()//show PGUP and esc
{
gotoxy(1,22);
 cprintf("enter PGUP key to go!");
gotoxy(1,23);
 cprintf("enter ESC exit");
 }
void scanvalue()  //scan machine's device
{
 unsigned long   addr1,addr2,busno,devno,funno;
 unsigned long   data1,data2,data3,data4;
 int i,x,j;
 int key;
 int totalNo=0;
    for(busno=0;busno<256;busno++)
    for(devno=0;devno<32;devno++)
    {
    for(funno=0;funno<8;funno++)
   {
     addr1=0x80000000+65536*busno+2048*devno+256*funno;
     window(1,1,80,25);
     gotoxy(4,5);
     x=5;
   for(j=0;j<64;j++)
  {
  addr2=addr1+j*4;
  asm mov eax,addr2
  asm mov dx,addc
  asm out dx,eax
  if(j%4==0)gotoxy(4,x++);
   textcolor(YELLOW);
   data1=inportb(0x0cfc);
   data2=inportb(0x0cfd);
   data3=inportb(0x0cfe);
   data4=inportb(0x0cff);
  if((data1==0xff)&(data2==0xff)) break;
  cprintf("%4.2X",data1);
  cprintf("%4.2X",data2);
  cprintf("%4.2X",data3);
  cprintf("%4.2X",data4);
  }
 loop: key=inport(0x60);
 asm{mov ax,key
    and ax,0xff
    mov key,ax}
   switch(key)
 { case 0x0001: exit(0);
   case 0x0049: break;
   default: goto loop;
	     }
    if((data1==0xff)&(data2)==0xff)
  continue;
  gotoxy(1,3);
  cprintf("busno:");
  cprintf("%.2X",busno);
  cprintf("   devno:");
  cprintf("%.2X",devno);
  cprintf("   funno:");
  cprintf("%.2X",funno);
  cprintf("   totaL:");
  totalNo=totalNo+1;
  textcolor(WHITE);
  cprintf("%d",totalNo);
  delay(200);
  point();
  } }}
void title()//show structure
{
int i;
clrscr();
textcolor(YELLOW);
 textbackground(BLACK);
 cprintf("           PCI red make by jackexu           ");
 printf("\n") ;
 textcolor(RED);
 textbackground(WHITE);
 cprintf("byte");
  printf("\n");
  textcolor(GREEN);
  textbackground(BLACK);
  cprintf("busno:00");
  gotoxy(12,3);
  cprintf("devno:00");
  gotoxy(23,3);
  cprintf("funno:00");
  printf("\n");
  textbackground(BLACK);
  textcolor(YELLOW);
  printf("   ");
  for(i=0;i<16;i++)
 { textcolor(WHITE);
  cprintf("%4.2X",i);
    }
  printf("\n");
  for(i=0;i<16;i++)
  { textcolor(WHITE);
   cprintf("%X0",i);
   printf("\n");
   }
 point();
  }
 main()
 {
  title();
  scanvalue();
    }


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -