Techwiki:Win32k/PATH

From ReactOS Wiki
Jump to: navigation, search

PATHDT as it's called by Yuan, same struct verified for XP

typedef struct _PATHDT
{
  struct _PATHDT *pNext;      // 0x000
  struct _PATHDT *pPrev;      // 0x004
  FLONG           flags;      // 0x008
  ULONG           cPoints;    // 0x00c
  POINTFX         aptfx[0];   // 0x010
} PATHDT;

pool Tag is 'Gpat', verified for XP

typedef struct _PATHDEF
{
  struct _PATHDEF *pNext;             // 0x000
  PATHDT          *pTail;             // 0x004 pointer to an open location inside this structure.
  ULONG           nAllocSize;         // 0x008
  PATHDT          pathdt[0];          // 0x00c
} PATHDEF, *PPATHDEF;

The object from the handle table, with gdikdx dpo labels and defines

// Path type flags
#define PATHTYPE_KEEPME 1
#define PATHTYPE_STACK  2

typedef struct _PATH
{
  BASEOBJECT   BaseObject;       // 0x000
  PATHDEF      *ppachain;        // 0x010 = -> 'Gpat'
  PATHDT       *pprfirst;        // 0x014
  PATHDT       *pprlast;         // 0x018
  RECTFX       rcfxBoundBox;     // 0x01c
  POINTFX      ptfxSubPathStart; // 0x02c
  FLONG        flags;            // 0x034 PATHDATA flags.
  PATHDT       *pprEnum;         // 0x038
  FLONG        flType;           // 0x03c path type.
  FLONG        fl;               // 0x040 PATHOBJ save info.
  ULONG        cCurves;          // 0x044 "       "    "
  DWORD        cle[48];          // 0x048 TBD?
  PVOID        punknown;         // 0x108 Vista+
  DWORD        dwunknown;        // 0x10c
// size XP is 264 = 0x108, Vista+ 272
} PATH;

typedef struct _EPATHOBJ
{
  PATHOBJ   po;      // 0x00
  PATH      *ppath;  // 0x08
  CLIPOBJ   *pco;    // 0x0c
// size XP is 16, W7U 48
} EPATHOBJ;