Difference between revisions of "Techwiki:Win32k/DC"
ThePhysicist (talk | contribs) |
ThePhysicist (talk | contribs) |
||
Line 11: | Line 11: | ||
/* 0x0024 */ FLONG flGraphicsCaps; | /* 0x0024 */ FLONG flGraphicsCaps; | ||
/* 0x0028 */ FLONG flGraphicsCaps2; | /* 0x0028 */ FLONG flGraphicsCaps2; | ||
− | /* 0x002C */ PVOID | + | /* 0x002C */ PVOID pdcattr; /* XP points to user mode DCATTR */ |
− | /* 0x0030 */ [[techwiki/win32k/DCLEVEL|DCLEVEL]] | + | /* 0x0030 */ [[techwiki/win32k/DCLEVEL|DCLEVEL]] dclevel; /* DCLEVEL is 0x1B8 Bytes */ |
− | /* 0x01E8 */ [[techwiki/win32k/DC_ATTR|DC_ATTR]] | + | /* 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.