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

Windows编程

开发平台:

Visual C++

  1. /*++
  2. Copyright 1996 - 1997 Microsoft Corporation
  3. Module Name:
  4.     cv.h
  5. Abstract:
  6.     This file contains all of the type definitions for accessing
  7.     CODEVIEW data.
  8. Environment:
  9.     Win32, User Mode
  10. --*/
  11. #include <types.h>
  12. #include <cvtypes.h>
  13. #include <cvinfo.h>
  14. #include <cvexefmt.h>
  15. // Global Segment Info table
  16. typedef struct _sgf {
  17.     unsigned short      fRead   :1;
  18.     unsigned short      fWrite  :1;
  19.     unsigned short      fExecute:1;
  20.     unsigned short      f32Bit  :1;
  21.     unsigned short      res1    :4;
  22.     unsigned short      fSel    :1;
  23.     unsigned short      fAbs    :1;
  24.     unsigned short      res2    :2;
  25.     unsigned short      fGroup  :1;
  26.     unsigned short      res3    :3;
  27. } SGF;
  28. typedef struct _sgi {
  29.     SGF                 sgf;        // Segment flags
  30.     unsigned short      iovl;       // Overlay number
  31.     unsigned short      igr;        // Group index
  32.     unsigned short      isgPhy;     // Physical segment index
  33.     unsigned short      isegName;   // Index to segment name
  34.     unsigned short      iclassName; // Index to segment class name
  35.     unsigned long       doffseg;    // Starting offset inside physical segment
  36.     unsigned long       cbSeg;      // Logical segment size
  37. } SGI;
  38. typedef struct _sgm {
  39.     unsigned short      cSeg;       // number of segment descriptors
  40.     unsigned short      cSegLog;    // number of logical segment descriptors
  41. } SGM;
  42. #define FileAlign(x)  ( ((x) + p->optrs.optHdr->FileAlignment - 1) &  
  43.                             ~(p->optrs.optHdr->FileAlignment - 1) )
  44. #define SectionAlign(x) (((x) + p->optrs.optHdr->SectionAlignment - 1) &  
  45.                             ~(p->optrs.optHdr->SectionAlignment - 1) )
  46. #define NextSym32(m)  ((DATASYM32 *) 
  47.   (((DWORD)(m) + sizeof(DATASYM32) + 
  48.     ((DATASYM32*)(m))->name[0] + 3) & ~3))
  49. #define NextSym16(m)  ((DATASYM16 *) 
  50.   (((DWORD)(m) + sizeof(DATASYM16) + 
  51.     ((DATASYM16*)(m))->name[0] + 1) & ~1))