Techwiki:Win32k/DC

From ReactOS Wiki
Revision as of 17:48, 21 March 2008 by GreatLord (talk | contribs)
Jump to: navigation, search

Windows XP version of DCOBJ

typedef struct
{
  /* 0x0000 */  BASEOBJECT  BaseObject;
  /* 0x0010 */  DHPDEV      dhpdev;    /* (Handle BITMAP) of PDev */
  /* 0x0014 */  DWORD       dctp;      /* DC Type */
  /* 0x0018 */  DWORD       fs;        /* Flags */
  /* 0x001C */  PVOID       ppdev;     /* Pointer to structure. */
  /* 0x0020 */  PVOID       hsem;   
  /* 0x0024 */  FLONG       flGraphicsCaps;
  /* 0x0028 */  FLONG       flGraphicsCaps2;
  /* 0x002C */  PVOID       pDCAttr;  /* XP points to user mode DCATTR */
  /* 0x0030 */  DCLEVEL     dcLevel;  /* DCLEVEL is 0x1B8 Bytes */
  /* 0x01E8 */  DC_ATTR     dcAttr;   /* DC_ATTR is 0x1D0 Bytes */
  /* 0x03B8 */  HDC         hdcNext;
  /* 0x03BC */  HDC         hdcPrev;
  /* 0x03C0 */  RECTL       erclClip;
  /* 0x03D8 */  RECTL       erclWindow; /* See note 1 */
  /* 0x03E8 */  RECTL       erclBounds; /* SetGetBoundsRect stores the value here */
  /* 0x03F8 */  RECTL       erclBoundsApp;
  /* 0x0408 */  PVOID       prgnAPI;
  /* 0x040C */  PVOID       prgnVis;
  /* 0x0410 */  PVOID       prgnRao_;
  /* 0x0414 */  POINTL      ptlFillOrigin;
  /* 0x041C */  unsigned    eboFill_[21]; /* EBRUSHOBJ* */
  /* 0x0470 */  unsigned    eboLine_[21];
  /* 0x04C4 */  unsigned    eboText_[21];
  /* 0x0518 */  unsigned    eboBackground_[21];
  /* 0x056C */  HFONT       hlfntCur;
  /* 0x0570 */  FLONG       flSimulationFlags;
  /* 0x0574 */  LONG        lEscapement;
  /* 0x0578 */  PVOID       prfnt;
  /* 0x057C */  unsigned    co_[31]; /* CLIPOBJ */
  /* 0x05F8 */  PPFF        pPFFList; /* PFF* */
  /* 0x05FC */  ULONG       unkdata0;
  /* 0x0600 */  INT         ipfdDevMax;
  /* 0x0604 */  ULONG       ulCopyCount; /* It has 0x144 */
  /* 0x0608 */  PVOID       pSurfInfo;
  /* 0x060C */  ULONG       unkdata1[6];
  /* 0x0624 */  ULONG       CopyCount;
  /* 0x0628 */  ULONG       unkdata2[3];  /* DCMEMOBJ XP size == 0x634 */
} DCOBJ;

Note:

1. NtGdiGetDeviceWidth

erclWindow: Rectangle Window 3D8 = LONG left; 3DC = LONG top; 3E0 = LONG right; 3E4 = LONG bottom; return (right - left);