Difference between revisions of "Techwiki:Win32k/DC"
ThePhysicist (talk | contribs) |
ThePhysicist (talk | contribs) |
||
Line 5: | Line 5: | ||
/* 0x0000 */ [[techwiki/win32k/BASEOBJECT|BASEOBJECT]] BaseObject; | /* 0x0000 */ [[techwiki/win32k/BASEOBJECT|BASEOBJECT]] BaseObject; | ||
/* 0x0010 */ DHPDEV dhpdev; /* (Handle BITMAP) of PDev */ | /* 0x0010 */ DHPDEV dhpdev; /* (Handle BITMAP) of PDev */ | ||
− | /* 0x0014 */ | + | /* 0x0014 */ DCTYPE dctype; /* DC Type */ |
/* 0x0018 */ DWORD fs; /* Flags */ | /* 0x0018 */ DWORD fs; /* Flags */ | ||
/* 0x001C */ [[techwiki/win32k/PDEVOBJ|PPDEVOBJ]] ppdev; /* Pointer to structure. aka PDEVOBJ */ | /* 0x001C */ [[techwiki/win32k/PDEVOBJ|PPDEVOBJ]] ppdev; /* Pointer to structure. aka PDEVOBJ */ | ||
Line 45: | Line 45: | ||
} DCOBJ; | } DCOBJ; | ||
− | + | dctype: | |
− | + | typedef enum | |
− | + | { | |
− | + | DCTYPE_DIRECT = 0 | |
+ | DCTYPE_MEMORY = 1 | ||
+ | DCTYPE_INFO = 2 | ||
+ | } DCTYPE; | ||
fs: | fs: |
Revision as of 01:24, 15 March 2009
Windows XP version of DCOBJ
typedef struct { /* 0x0000 */ BASEOBJECT BaseObject; /* 0x0010 */ DHPDEV dhpdev; /* (Handle BITMAP) of PDev */ /* 0x0014 */ DCTYPE dctype; /* 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;
dctype:
typedef enum { DCTYPE_DIRECT = 0 DCTYPE_MEMORY = 1 DCTYPE_INFO = 2 } DCTYPE;
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.