Techwiki:Win32k/DC
Revision as of 23:56, 19 March 2009 by ThePhysicist (talk | contribs)
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