Difference between revisions of "Techwiki:Win32k/DC"
ThePhysicist (talk | contribs) |
|||
Line 7: | Line 7: | ||
/* 0x0014 */ DWORD dctp; /* DC Type */ | /* 0x0014 */ DWORD dctp; /* DC Type */ | ||
/* 0x0018 */ DWORD fs; /* Flags */ | /* 0x0018 */ DWORD fs; /* Flags */ | ||
− | /* 0x001C */ [[techwiki/win32k/DEVOBJ| | + | /* 0x001C */ [[techwiki/win32k/DEVOBJ|PPDEVOBJ]] ppdev; /* Pointer to structure. aka PDEVOBJ */ |
/* 0x0020 */ PVOID hsem; | /* 0x0020 */ PVOID hsem; | ||
/* 0x0024 */ FLONG flGraphicsCaps; | /* 0x0024 */ FLONG flGraphicsCaps; |
Revision as of 22:09, 24 April 2008
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; /* 0x0594 */ LONG lEscapement; /* 0x0598 */ RFONT * prfnt; // -> 'Gfnt' /* 0x059C */ unsigned co_[31]; /* Ref in NtGdiSetPixel called XCLIPOBJ::vSetup */ /* 0x0618 */ PPFF pPFFList; /* PFF* Ref in XDCOBJ::bDeleteDC */ /* 0x061C */ PVOID ClrxFormObj; /* Ref in XDCOBJ::vCleanupColorTransform, COLORTRANSFORMOBJ */ /* 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;
Note:
1. NtGdiGetDeviceWidth
erclWindow: Rectangle Window 3D8 = LONG left; 3DC = LONG top; 3E0 = LONG right; 3E4 = LONG bottom; return (right - left);
- The regions prgnAPI, prgnVis and prgnRao don't have a handle.