Difference between revisions of "Techwiki:Win32k/PDEV"

From ReactOS Wiki
Jump to: navigation, search
Line 50: Line 50:
 
   HANDLE      hSpooler;                // 54C 0x056C  
 
   HANDLE      hSpooler;                // 54C 0x056C  
 
   PVOID      pDesktopId;              // 550 0x0570   
 
   PVOID      pDesktopId;              // 550 0x0570   
   PVOID      pGraphicsDevice;         // 0x0574
+
   PGRAPHICS_DEVICE pGraphicsDevice;     //     574
 
   POINTL      ptlOrigion;              // 0x0578  
 
   POINTL      ptlOrigion;              // 0x0578  
 
   PDEVMODEW  pdmwDev;                  // 0x0580
 
   PDEVMODEW  pdmwDev;                  // 0x0580

Revision as of 04:05, 12 August 2009

Windows XP version of PDEVOBJ

#define INDEX_LAST 93 // For XP
#define HS_DDI_MAX 6

typedef struct _PDEVOBJ
{ //                                       W2k WXP
  BASEOBJECT  baseobj;                  // 000 000
  PPDEVOBJ    ppdevNext;                // 010 010
  int         cPdevRefs;                // 014 014
  int         cPdevOpenRefs;            // 018 018
  PPDEVOBJ    ppdevParent;              // 01C 01C
  FLONG       flags;                    // 020 020
  FLONG       flAccelerated;            // 
  HSEMAPHORE  hsemDevLock;              // 028 028
  HSEMAPHORE  hsemPointer;              // 02C
  POINTL      ptlPointer;               // 030
  SIZEL       szlPointer;               // 038 038
  SPRITESTATE SpriteState;              // 040 040 size = 1f4h
  HFONT       hlfntDefault;             // 21C 234 HFONT at this offset verified on xp
  HFONT       hlfntAnsiVariable;        // 220 238 HFONT at this offset verified on xp
  HFONT       hlfntAnsiFixed;           // 224 23C HFONT at this offset verified on xp
  HSURF       ahsurf[HS_DDI_MAX];       // 228 240 HSURF at this offset verified on XP
  PUSHORT     pusPrtDataFileName;       // 0x0258 
  PVOID       pDevHTInfo;               // 244 0x025C 
  RFONT *     prfntActive;              // 248 0x0260
  RFONT *     prfntInactive;            // 24C 0x0264
  ULONG       cInactive;                // 250 0x0268 UKN
  BYTE        ajbo[0x5C];               // 0x026C
  ULONG       cDirectDrawDisableLocks;  // 0x02C8 
  PVOID       TypeOneInfo;              // 0x02CC 
  PVOID       pvGammaRamp;              // 0x02D0
  PVOID       RemoteTypeOne;            // 0x02D4
  ULONG       ulHorzRes;                // 0x02D8 slz if PDEV_META_DEVICE
  ULONG       ulVertRes;                // 0x02DC get it from here.
  PFN         pfnDrvSetPointerShape;    // 2C0 0x02E0
  PFN         pfnDrvMovePointer;        // 2C4 0x02E4
  PFN         pfnMovePointer;           // 2C8 0x02E8 
  PFN         pfnDrvSynchronize;        // 2CC 0x02EC (gdikdx: pfnSync)
  PFN         pfnDrvSynchronizeSurface; // 0x02F0
  PFN         pfnDrvSetPalette;         // 0x02F4 
  PFN         pfnDrvNotify;             // 0x02F8
  ULONG       TagSig;                   // 0x02FC
  PLDEVOBJ    pldev;                    // 2E0 300
  DHPDEV      dhpdev;                   // 2E4 304
  PPALETTE    ppalSurf;                 // 2E8 0x0308 
  DEVINFO     devinfo;                  // 2EC 0x030C
  GDIINFO     gdiinfo;                  // 418 0x0438 
  PSURFACE    pSurface;                 // 548 0x0568
  HANDLE      hSpooler;                 // 54C 0x056C 
  PVOID       pDesktopId;               // 550 0x0570  
  PGRAPHICS_DEVICE pGraphicsDevice;     //     574
  POINTL      ptlOrigion;               // 0x0578 
  PDEVMODEW   pdmwDev;                  // 0x0580
  DWORD       Unknown3;                 // 0x0584 
  FLONG       DxDd_Flags;               // 0x0588 
  LONG        devAttr;                  // 0x058C
  PVOID       WatchDogContext;          // 0x0590
  ULONG       WatchDogs;                // 0x0594
  PFN         apfn[INDEX_LAST];         // B8C 0x0598
  unkown      eDirectDrawGlobal;        // 558
} PDEVOBJ, *PPDEVOBJ; // size 0x70C or 1804

Members

baseobj

Structure used by the handle manager. Unused for a PDEVOBJ.

ppdevNext

Pointer to the next PDEV in the list.

cPdevRefs

Number of references to this PDEV.

cPdevOpenRefs

ppdevParent

Pointer to the parent's PDEVOBJ. Points to this PDEV if no parent.

flags

Flags. Can be a combination of the following values.
#define PDEV_DISPLAY             0x00001
#define PDEV_HARDWARE_POINTER    0x00002
#define PDEV_SOFTWARE_POINTER    0x00004
#define PDEV_GOTFONTS            0x00040
#define PDEV_PRINTER             0x00080
#define PDEV_ALLOCATEDBRUSHES    0x00100
#define PDEV_HTPAL_IS_DEVPAL     0x00200
#define PDEV_DISABLED            0x00400
#define PDEV_SYNCHRONIZE_ENABLED 0x00800
#define PDEV_FONTDRIVER          0x02000
#define PDEV_GAMMARAMP_TABLE     0x04000
#define PDEV_UMPD                0x08000
#define PDEV_SHARED_DEVLOCK      0x10000
#define PDEV_META_DEVICE         0x20000
#define PDEV_DRIVER_PUNTED_CALL  0x40000
#define PDEV_CLONE_DEVICE        0x80000

flAccelerated

hsemDevLock

DEVOBJ lock, == PERESOURCE

hsemPointer

ptlPointer

Current position of the mouse pointer, if any.

szlPointer

Current dimensions of the pointer shape.

SpriteState

hlfntDefault

Handle to the devices default logical font.

hlfntAnsiVariable

hlfntAnsiFixed

ahsurf

Array of handles for the standard fill patterns. See phsurfPatterns in DrvEnablePDEV documentation.

pusPrtDataFileName

pDevHTInfo

prfntActive

prfntInactive

cInactive

ajbo

EBRUSHOBJ, was 0xFFFFFFFF on XP

cDirectDrawDisableLocks

TypeOneInfo

pvGammaRamp

Gamma Ramp pointer.

RemoteTypeOne

REMOTETYPEONENODE *

ulHorzRes

slz if PDEV_META_DEVICE

ulVertRes

get it from here.

pfnDrvSetPointerShape

XP: win32k!WatchdogDrvSetPointerShape

pfnDrvMovePointer

XP: win32k!WatchdogDrvMovePointer

pfnMovePointer

pfnDrvSynchronize

pfnDrvSynchronizeSurface (SURFACE *,RECTL *, FLONG)

pfnDrvSetPalette

pfnDrvNotify

vNotify (ULONG, PVOID)

TagSig

Tag Sign! 'Pdev'

pldev

Pointer to the corresponding LDEVOBJ.

dhpdev

Driver defined handle to the device.

ppalSurf

devinfo

gdiinfo

pSurface

(CONTAINING_RECORD +10h = SURFOBJ), the pointer will start at SURFOBJ of the SURFACE structure.

hSpooler

pDesktopId

pGraphicsDevice

PGRAPHICS_DEVICE see DISPLAY_DEVICE

ptlOrigion

pdmwDev

PDEVMODEW.dmSize + dmDriverExtra == Size.

DxDd_Flags

devAttr

EngQueryDeviceAttribute, ENG_DEVICE_ATTRIBUTE

WatchDogContext

WatchDogs

apfn

Driver Function pointer table. See winddi.h. Is filled in by GDI according to the DRVFN return from the driver.

eDirectDrawGlobal

Remarks

  • The pool tag for the structure is 'GDev'

References