home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / sdk / sdktools / image / include / dbgver.h < prev    next >
C/C++ Source or Header  |  1997-10-05  |  3KB  |  129 lines

  1. /*++
  2.  
  3. Copyright (c) 1992-1997  Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.     dbgver.h
  8.  
  9. Abstract:
  10.  
  11. Environment:
  12.  
  13.     Win32, User Mode
  14.  
  15. --*/
  16.  
  17. #if ! defined _DBGVER_
  18. #define _DBGVER_
  19.  
  20. /*
  21. **  DBG_API_VERSION is the major version number used to specify the
  22. **      api version of the debugger or debug dll.  For release versions
  23. **      dlls will export this and debuggers will check against this
  24. **      version to verify that it can use the dll.
  25. **
  26. **      For beta and debug versions, this number will be used in
  27. **      conjunction with minor and revision numbers (probably derived
  28. **      from SLM rmm & rup) to verify compatibility.
  29. **
  30. **      Until the API has stabilized, we will most likely have to
  31. **      rev this version number for every major product release.
  32. **
  33. */
  34.  
  35. #include <dbapiver.h>
  36.  
  37. /*  AVS - Api Version Structure:
  38. **
  39. **      All debug dlls should be prepared to return a pointer to this
  40. **      structure conaining its vital statistics.  The debugger should
  41. **      check first two characters of the dll's name against rgchType
  42. **      and the version numbers as described in the DBG_API_VERSION
  43. **      and show the user an error if any of these tests fail.
  44. **
  45. */
  46.  
  47. typedef enum {
  48.     rlvtRelease,
  49.     rlvtBeta,
  50.     rlvtDebug
  51. } RLVT;     // ReLease Version Type
  52.  
  53. typedef struct _AVS {
  54.     CHAR rgchType [ 2 ];    // Component name (EE,EM,TL,SH,DM)
  55.     WORD rlvt;              // ReLease Version Type
  56.     BYTE iApiVer;           // DBG_API_VERSION
  57.     BYTE iApiSubVer;        // DBG_API_SUBVERSION
  58.     WORD iRup;              // Revision number
  59.     WORD chBuild;           // Build of revision # (a,b,c,d)
  60.     LSZ  lszTitle;          // User readable text describing the DLL
  61.     MPT  mpt;               // CPU binary is running on
  62.     WORD iRmj;              // Major version number
  63.     WORD iRmm;              // Minor version number
  64. } AVS;  // Api Version Structure
  65. typedef AVS FAR *LPAVS;
  66.  
  67. /*  DBGVersionCheck:
  68. **
  69. **      All debug dlls should provide this API and support the return
  70. **      of a pointer to the structure described above even before
  71. **      initialization takes place.
  72. */
  73.  
  74. #if defined(_M_IX86)
  75. #define __dbgver_cpu__ mptix86
  76. #elif defined(_M_MRX000)
  77. #define __dbgver_cpu__ mptmips
  78. #elif defined(_M_ALPHA)
  79. #define __dbgver_cpu__ mptdaxp
  80. #elif defined(_M_PPC)
  81. #define __dbgver_cpu__ mptmppc
  82. #else
  83. #error( "unknown target machine" );
  84. #endif
  85.  
  86. #define DEBUG_VERSION(C1,C2,TITLE) \
  87. AVS Avs = {      \
  88.     { C1, C2 },         \
  89.     rlvtDebug,          \
  90.     DBG_API_VERSION,    \
  91.     DBG_API_SUBVERSION, \
  92.     0,                  \
  93.     '\0',               \
  94.     TITLE,              \
  95.     __dbgver_cpu__,     \
  96.     0,                \
  97.     0,                \
  98.     };
  99.  
  100. #define RELEASE_VERSION(C1,C2,TITLE)    \
  101. AVS Avs = {      \
  102.     { C1, C2 },         \
  103.     rlvtRelease,        \
  104.     DBG_API_VERSION,    \
  105.     DBG_API_SUBVERSION, \
  106.     0,                  \
  107.     '\0',               \
  108.     TITLE,              \
  109.     __dbgver_cpu__,     \
  110.     0,                \
  111.     0,                \
  112. };
  113.  
  114. #undef MINOR
  115. #undef MAJOR
  116.  
  117. typedef LPAVS (LOADDS EXPCALL FAR *DBGVERSIONCHECK)(void);
  118.  
  119. #define DBGVERSIONPROCNAME "DBGVersionCheck"
  120.  
  121. typedef LPAVS (*DBGVERSIONPROC)(void);
  122.  
  123. LPAVS LOADDS EXPCALL FAR DBGVersionCheck( void );
  124.  
  125. #define DBGVERSIONFUNCTION() \
  126.     LPAVS LOADDS EXPCALL FAR DBGVersionCheck( void ) { return &Avs; }
  127.  
  128. #endif // _DBGVER_
  129.