home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ida35bc.zip / VXD.IDC < prev    next >
Text File  |  1996-01-29  |  3KB  |  135 lines

  1. //
  2. //      This file is executed when a new VxD is loaded.
  3. //      IDA considers LE format files as VxDs.
  4. //
  5. //
  6.  
  7. //-----------------------------------------------------------------------
  8. static Describe(ddb,i) {
  9.   auto next,x,y;
  10.  
  11.   x = ddb;
  12.   MakeDword(x);
  13.   MakeComm (x,form("Next_%ld",i));
  14.   next = Dword(x);
  15.   if ( next != 0 ) OpOffset(x,0);
  16.   x = x + 4;
  17.  
  18.   MakeWord(x);
  19.   MakeName(x,form("SDK_Version_%ld",i));
  20.   OpNum   (x);
  21.   x = x + 2;
  22.  
  23.   MakeWord(x);
  24.   MakeName(x,form("Req_Device_Number_%ld",i));
  25.   OpNum   (x);
  26.   x = x + 2;
  27.  
  28.   MakeByte(x);
  29.   MakeName(x,form("Dev_Major_Version_%ld",i));
  30.   OpNum(x);
  31.   MakeComm(x,"Major device number");
  32.   x = x + 1;
  33.  
  34.   MakeByte(x);
  35.   MakeName(x,form("Dev_Minor_Version_%ld",i));
  36.   OpNum   (x);
  37.   MakeComm(x,"Minor device number");
  38.   x = x + 1;
  39.  
  40.   MakeWord(x);
  41.   MakeName(x,form("Flags_%ld",i));
  42.   OpNum   (x);
  43.   MakeComm(x,"Flags for init calls complete");
  44.   x = x + 2;
  45.  
  46.   MakeStr (x,8);
  47.   MakeName(x,form("Name_%ld",i));
  48.   MakeComm(x,"Device name");
  49.   x = x + 8;
  50.  
  51.   MakeDword(x);
  52.   MakeName(x,form("Init_Order_%ld",i));
  53.   OpNum   (x);
  54.   MakeComm(x,"Initialization Order");
  55.   x = x + 4;
  56.  
  57.   MakeDword(x);
  58.   MakeName(x,form("Control_Proc_%ld",i));
  59.   OpOffset(x,0);
  60.   MakeComm(x,"Offset of control procedure");
  61.   MakeCode( Dword(x) );
  62.   MakeName( Dword(x), form("Control_%ld",i) );
  63.   x = x + 4;
  64.  
  65.   MakeDword(x);
  66.   MakeName(x,form("V86_API_Proc_%ld",i));
  67.   MakeComm(x,"Offset of API procedure (or 0)");
  68.   y = Dword(x);
  69.   if ( y != 0 ) {
  70.     OpOffset(x,0);
  71.     MakeCode( y );
  72.     MakeName( y, form("V86_%ld",i) );
  73.   }
  74.   x = x + 4;
  75.  
  76.   MakeDword(x);
  77.   MakeName(x,form("PM_API_Proc_%ld",i));
  78.   MakeComm(x,"Offset of API procedure (or 0)");
  79.   y = Dword(x);
  80.   if ( y != 0 ) {
  81.     OpOffset(x,0);
  82.     MakeCode( y );
  83.     MakeName( y, form("PM_%ld",i) );
  84.   }
  85.   x = x + 4;
  86.  
  87.   MakeDword(x);
  88.   MakeName(x,form("V86_API_CSIP_%ld",i));
  89.   MakeComm(x,"CS:IP of API entry point");
  90.   x = x + 4;
  91.  
  92.   MakeDword(x);
  93.   MakeName(x,form("PM_API_CSIP_%ld",i));
  94.   MakeComm(x,"CS:IP of API entry point");
  95.   x = x + 4;
  96.  
  97.   MakeDword(x);
  98.   MakeName(x,form("Reference_Data_%ld",i));
  99.   MakeComm(x,"Reference data from real mode");
  100.   x = x + 4;
  101.  
  102.   MakeDword(x);
  103.   MakeName(x,form("Service_Table_Ptr_%ld",i));
  104.   MakeComm(x,"Pointer to service table");
  105.   y = Dword(x);
  106.   if ( y != 0 ) {
  107.     OpOffset(x,0);
  108.     MakeName( y, form("Service_Table_%ld",i) );
  109.     MakeDword(y);
  110.     MakeArray( y, Dword(x+4) );
  111.   }
  112.   x = x + 4;
  113.  
  114.   MakeDword(x);
  115.   MakeName(x,form("Service_Size_%ld",i));
  116.   MakeComm(x,"Number of services");
  117.   x = x + 4;
  118.  
  119.   return next;
  120. }
  121.  
  122. //-----------------------------------------------------------------------
  123. static main() {
  124.   auto ea;
  125.   auto i;
  126.  
  127.   i  = 0;
  128.   ea = ScreenEA();
  129.   while ( GetFlags(ea) != 0 ) {    // While ea points to valid address
  130.     ea = Describe(ea,i);
  131.     if ( ea == 0 ) break;
  132.     i = i + 1;
  133.   }
  134. }
  135.