Techwiki:Win32k/DC

From ReactOS Wiki
Revision as of 23:56, 19 March 2009 by ThePhysicist (talk | contribs)
Jump to: navigation, search

Windows XP version of DCOBJ

typedef struct
{ //                                              W2k WXP
  BASEOBJECT  BaseObject;                      // 000 000
  DHPDEV      dhpdev;                          // 010 010
  DCTYPE      dctype;                          // 014 014
  DWORD       fs;                              // 018 018
  PPDEVOBJ    ppdev;                           // 01C 01C
  PVOID       hsem;                            // 020 020
  FLONG       flGraphicsCaps;                  // 024 024
  FLONG       flGraphicsCaps2;                 // 028 028
  PVOID       pdcattr;                         // 02c 02c
  DCLEVEL     dclevel;                         // 030 030 DCLEVEL is 0x1B8 Bytes
  DC_ATTR     dcattr;                          // 1E8 1E8 DC_ATTR is 0x1D0 Bytes
  HDC         hdcNext;                         // 3B8 3B8
  HDC         hdcPrev;                         // 3BC 3BC
  RECTL       erclClip;                        // 3C0 3C0
  POINTL      ptlDCOrig;                       // 3D0 3D0
  RECTL       erclWindow;                      // 3D8 3D8
  RECTL       erclBounds;                      // 3E8 3E8
  RECTL       erclBoundsApp;                   // 3F8 3F8
  PVOID       prgnAPI;                         // 408 408
  PVOID       prgnVis;                         // 40C 40C
  PVOID       prgnRao;                         // 410 410
  POINTL      ptlFillOrigin;                   // 414 414
  EBRUSHOBJ   eboFill;                         // 41C 41C
  EBRUSHOBJ   eboLine;                         // 470 478
  EBRUSHOBJ   eboText;                         // 4c4 4D4
  EBRUSHOBJ   eboBackground;                   // 518 530
  HFONT       hlfntCur;                        // 56c 58C
  FLONG       flSimulationFlags;               // 570 590
  LONG        lEscapement;                     // 574 594
  RFONT *     prfnt;                           // 578 598
  XCLIPOBJ    co;                              // 57c 59C
  PPFF        pPFFList;                        // 5f8 618
  PVOID       pClrxFormLnk;                    //     61C
  INT         ipfdDevMax;                      // 600 620
  ULONG       ulCopyCount;                     // 604 624
  PVOID       pSurfInfo;                       // 608 628
  POINTL      ptlDoBanding;                    // 60C 62C
  /* DCMEMOBJ XP size == 0x634 */
} DCOBJ;

Fields

dhpdev

Device handle to the PDEV.

dctype

The type of DC. Can be one of the following values:
typedef enum
{
  DCTYPE_DIRECT = 0
  DCTYPE_MEMORY = 1
  DCTYPE_INFO = 2
} DCTYPE;

fs

Flags. Can be a cpmbination of the following values.
#define DC_DISPLAY  1
#define DC_DIRECT 2
#define DC_CANCELED 4
#define DC_PERMANANT 0x08
#define DC_DIRTY_RAO 0x10
#define DC_ACCUM_WMGR 0x20
#define DC_ACCUM_APP 0x40
#define DC_RESET 0x80
#define DC_SYNCHRONIZEACCESS 0x100
#define DC_EPSPRINTINGESCAPE 0x200
#define DC_TEMPINFODC 0x400
#define DC_FULLSCREEN 0x800
#define DC_IN_CLONEPDEV 0x1000
#define DC_REDIRECTION 0x2000
#define DC_SHAREACCESS 0x4000

ppdev

Pointer to the DCs PDEV.

hsem

flGraphicsCaps

flGraphicsCaps2

pdcattr

Pointer to the DCs DC_ATTR. User mode pointer for user mode objects. Points to DC.dcattr if the DC is a kernel DC. Never NULL!

dclevel

DCLEVEL is 0x1B8 Bytes

dcattr

DC_ATTR is 0x1D0 Bytes

hdcNext

Points to the next DC in the global list of DCs.

hdcPrev

erclClip

a RECTL structure, describing the bounding box of the DCs clip reagion.

ptlDCOrig

Ref in XDCOBJ::bCleanDC

erclWindow

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

erclBounds

SetGetBoundsRect stores the value here

erclBoundsApp

prgnAPI

Doesn't have a handle.

prgnVis

Doesn't have a handle.

prgnRao

Doesn't have a handle.

ptlFillOrigin

eboFill

Describes the currently active fill brush. Might need to be updated from the DC_ATTR.
Ref in XDCOBJ::bDeleteDC

eboLine

Describes the currently active Line brush. Might need to be updated from the DC_ATTR.

eboText

Describes the currently active text brush. Might need to be updated from the DC_ATTR.

eboBackground

Describes the currently active background brush. Might need to be updated from the DC_ATTR.

hlfntCur

Handle to the currently selected font.

flSimulationFlags

Flags that describe font simulation. 0x20 Italic & 0x80 Underline

lEscapement

prfnt

Pointer to the currently selected fon's RFONT. Might need to be updated from the DC_ATTR.

co

Ref in NtGdiSetPixel called XCLIPOBJ::vSetup

pPFFList

PFF* Ref in XDCOBJ::bDeleteDC

pClrxFormLnk

Pointer to a link list of Color Transforms.
Ref in XDCOBJ::vCleanupColorTransform, COLORTRANSFORMOBJ

ipfdDevMax

Ref in XDCOBJ::ipfdDevMax/Get, -1 NtGdiEndPage, 0 GreDoBanding

ulCopyCount

Ref in NtGdiGetAndSetDCDword

pSurfInfo

Ref in DC::bMakeInfoDC Copy from DCLEVEL.pSurface

ptlDoBanding

Ref in GreDoBanding