Techwiki:Win32k/DC

From ReactOS Wiki
Revision as of 21:05, 19 April 2008 by ThePhysicist (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. aka PDEVOBJ */
  /* 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;
  /* 0x03D0 */  POINTL      ptlDCOrig; /* Ref in XDCOBJ::bCleanDC */
  /* 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 */  EBRUSHOBJ   eboFill; /* Ref in XDCOBJ::bDeleteDC */
  /* 0x0478 */  EBRUSHOBJ   eboLine; /*       " */
  /* 0x04D4 */  EBRUSHOBJ   eboText; /*       " */
  /* 0x0530 */  EBRUSHOBJ   eboBackground; /* " */
  /* 0x058C */  HFONT       hlfntCur;
  /* 0x0590 */  FLONG       flSimulationFlags;
  /* 0x0594 */  LONG        lEscapement;
  /* 0x0598 */  RFONT *     prfnt; // -> 'Gfnt'
  /* 0x059C */  unsigned    co_[31];      /* Ref in NtGdiSetPixel called XCLIPOBJ::vSetup */
  /* 0x0618 */  PPFF        pPFFList;     /* PFF* Ref in XDCOBJ::bDeleteDC */
  /* 0x061C */  PVOID       ClrxFormObj;  /* Ref in XDCOBJ::vCleanupColorTransform, COLORTRANSFORMOBJ */
  /* 0x0620 */  INT         ipfdDevMax;   /* Ref in XDCOBJ::ipfdDevMax/Get, -1 NtGdiEndPage, 0 GreDoBanding */
  /* 0x0624 */  ULONG       ulCopyCount;  /* Ref in NtGdiGetAndSetDCDword */
  /* 0x0628 */  PVOID       pSurfInfo;    /* Ref in DC::bMakeInfoDC Copy from DCLEVEL.pSurface */
  /* 0x062C */  POINTL      ptlDoBanding; /* Ref in GreDoBanding */
  /* 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);

  • The regions prgnAPI, prgnVis and prgnRao don't have a handle.