DBGVER.H
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

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