Difference between revisions of "Techwiki:Win32k/DC"

From ReactOS Wiki
Jump to: navigation, search
Line 3: Line 3:
 
  typedef struct
 
  typedef struct
 
  {
 
  {
   /* 0x0000 */  HGDIOBJ    hHmgr;
+
   /* 0x0000 */  HGDIOBJ    hHmgr; /* aka struct BASEOBJECT should be here */
 
   /* 0x0004 */  PVOID      pEntry;
 
   /* 0x0004 */  PVOID      pEntry;
 
   /* 0x0008 */  ULONG      cExcLock;
 
   /* 0x0008 */  ULONG      cExcLock;
   /* 0x000C */  ULONG      Tid;  
+
   /* 0x000C */  ULONG      Tid;   /* aka struct BASEOBJECT last member here */ 
 
   /* 0x0010 */  DHPDEV      dhpdev;    /* (Handle BITMAP) of PDev */
 
   /* 0x0010 */  DHPDEV      dhpdev;    /* (Handle BITMAP) of PDev */
 
   /* 0x0014 */  DWORD      dctp;      /* DC Type */
 
   /* 0x0014 */  DWORD      dctp;      /* DC Type */

Revision as of 09:37, 21 March 2008

Windows XP version of DCOBJ

typedef struct
{
  /* 0x0000 */  HGDIOBJ     hHmgr; /* aka struct BASEOBJECT should be here */
  /* 0x0004 */  PVOID       pEntry;
  /* 0x0008 */  ULONG       cExcLock;
  /* 0x000C */  ULONG       Tid;   /* aka struct BASEOBJECT last member here */  
  /* 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 point 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 store 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; /* 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);