Difference between revisions of "Techwiki:Win32k/PATH"

From ReactOS Wiki
Jump to: navigation, search
(Update data)
 
Line 10: Line 10:
  
 
pool Tag is 'Gpat', verified for XP
 
pool Tag is 'Gpat', verified for XP
  typedef struct
+
  typedef struct _PATHDEF
 
  {
 
  {
   DWORD    unknown;           // 0x000
+
   struct _PATHDEF *pNext;             // 0x000
   PVOID    pTail;             // 0x004
+
   PATHDT          *pTail;             // 0x004 pointer to an open location inside this structure.
   ULONG     nAllocSize;        // 0x008
+
   ULONG           nAllocSize;        // 0x008
   PATHDT   pathdt[0];          // 0x00c
+
   PATHDT         pathdt[0];          // 0x00c
 
  } PATHDEF, *PPATHDEF;
 
  } PATHDEF, *PPATHDEF;
  
The object from the handle table
+
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
 
  typedef struct _PATH
 
  {
 
  {
 
   BASEOBJECT  BaseObject;      // 0x000
 
   BASEOBJECT  BaseObject;      // 0x000
   PPATHDEF    pPathDef;         // 0x010 = -> 'Gpat'
+
   PATHDEF      *ppachain;       // 0x010 = -> 'Gpat'
   PVOID        pprfirst;         // 0x014
+
   PATHDT      *pprfirst;       // 0x014
   PVOID        pprlast;         // 0x018
+
   PATHDT      *pprlast;         // 0x018
 
   RECTFX      rcfxBoundBox;    // 0x01c
 
   RECTFX      rcfxBoundBox;    // 0x01c
 
   POINTFX      ptfxSubPathStart; // 0x02c
 
   POINTFX      ptfxSubPathStart; // 0x02c
   ULONG       cChunks;         // 0x034
+
   FLONG       flags;           // 0x034 PATHDATA flags.
   ULONG        unknown038;       // 0x038
+
   PATHDT      *pprEnum;         // 0x038
   ULONG       cSomething;       // 0x03c
+
   FLONG       flType;           // 0x03c path type.
   ULONG       fl;              // 0x040
+
   FLONG       fl;              // 0x040 PATHOBJ save info.
   ULONG        cCurves;          // 0x044
+
   ULONG        cCurves;          // 0x044 "      "    "
   DWORD        unknown048[48];   // 0x048
+
   DWORD        cle[48];         // 0x048 TBD?
  // size is 264 = 0x108
+
  PVOID        punknown;        // 0x108 Vista+
 +
  DWORD        dwunknown;        // 0x10c
 +
  // size XP is 264 = 0x108, Vista+ 272
 
  } PATH;
 
  } PATH;
 +
 +
typedef struct _EPATHOBJ
 +
{
 +
  PATHOBJ  po;      // 0x00
 +
  PATH      *ppath;  // 0x08
 +
  CLIPOBJ  *pco;    // 0x0c
 +
// size XP is 16, W7U 48
 +
} EPATHOBJ;

Latest revision as of 12:57, 11 July 2017

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;