Difference between revisions of "Techwiki:Win32k/DC"

From ReactOS Wiki
Jump to: navigation, search
Line 11: Line 11:
 
   /* 0x0024 */  FLONG      flGraphicsCaps;
 
   /* 0x0024 */  FLONG      flGraphicsCaps;
 
   /* 0x0028 */  FLONG      flGraphicsCaps2;
 
   /* 0x0028 */  FLONG      flGraphicsCaps2;
   /* 0x002C */  PVOID      pDCAttr;  /* XP points to user mode DCATTR */
+
   /* 0x002C */  PVOID      pdcattr;  /* XP points to user mode DCATTR */
   /* 0x0030 */  [[techwiki/win32k/DCLEVEL|DCLEVEL]]    dcLevel;  /* DCLEVEL is 0x1B8 Bytes */
+
   /* 0x0030 */  [[techwiki/win32k/DCLEVEL|DCLEVEL]]    dclevel;  /* DCLEVEL is 0x1B8 Bytes */
   /* 0x01E8 */  [[techwiki/win32k/DC_ATTR|DC_ATTR]]    dcAttr;  /* DC_ATTR is 0x1D0 Bytes */
+
   /* 0x01E8 */  [[techwiki/win32k/DC_ATTR|DC_ATTR]]    dcattr;  /* DC_ATTR is 0x1D0 Bytes */
 
   /* 0x03B8 */  HDC        hdcNext;
 
   /* 0x03B8 */  HDC        hdcNext;
 
   /* 0x03BC */  HDC        hdcPrev;
 
   /* 0x03BC */  HDC        hdcPrev;

Revision as of 01:05, 15 March 2009

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 */  PPDEVOBJ    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; // 0x20 Italic & 0x80 Underline
  /* 0x0594 */  LONG        lEscapement;
  /* 0x0598 */  RFONT *     prfnt; // -> 'Gfnt'
  /* 0x059C */  XCLIPOBJ    co;           /* Ref in NtGdiSetPixel called XCLIPOBJ::vSetup */
  /* 0x0618 */  PPFF        pPFFList;     /* PFF* Ref in XDCOBJ::bDeleteDC */
  /* 0x061C */  PVOID       pClrxFormLnk; /* Ref in XDCOBJ::vCleanupColorTransform,
                                             COLORTRANSFORMOBJ see Note 2.*/
  /* 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;

dctp:

#define DCTYPE_DIRECT 0
#define DCTYPE_MEMORY 1
#define DCTYPE_INFO   2

fs:

#define DC_DISPLAY          
#define DC_CANCELED         
#define DC_PERMANANT        
#define DC_DIRTY_RAO        
#define DC_ACCUM_WMGR       
#define DC_ACCUM_APP        
#define DC_RESET            
#define DC_SYNCHRONIZEACCESS
#define DC_EPSPRINTINGESCAPE
#define DC_TEMPINFODC       
#define DC_FULLSCREEN       
#define DC_IN_CLONEPDEV     
#define DC_REDIRECTION      
#define DC_SHAREACCESS      


Note:

1. NtGdiGetDeviceWidth

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

2. Pointer to a link list of Color Transforms.

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