Techwiki:Win32k/PDEV

From ReactOS Wiki
(Redirected from Techwiki:Win32k/PDEVOBJ)
Jump to: navigation, search

Windows XP version of PDEVOBJ

#define INDEX_LAST 93 // For XP
#define HS_DDI_MAX 6
 
typedef struct _PDEV
{ //                                           W2k WXP
    BASEOBJECT  baseobj;                    // 000 000
    PPDEV       ppdevNext;                  // 010 010
    int         cPdevRefs;                  // 014 014
    int         cPdevOpenRefs;              // 018 018
    PPDEV       ppdevParent;                // 01C 01C
    FLONG       flags;                      // 020 020
    FLONG       flAccelerated;              // 024 024
    HSEMAPHORE  hsemDevLock;                // 028 028
    HSEMAPHORE  hsemPointer;                // 02C 02C
    POINTL      ptlPointer;                 // 030 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;         //     258 
    PVOID       pDevHTInfo;                 // 244 25C 
    PRFONT      prfntActive;                // 248 260
    PRFONT      prfntInactive;              // 24C 264
    ULONG       cInactive;                  // 250 268
    BYTE        ajbo[0x5C];                 // 254 26C
    ULONG       cDirectDrawDisableLocks;    // 2A8 2C8 
    PVOID       TypeOneInfo;                // 2AC 2CC 
    PVOID       pvGammaRamp;                // 2B0 2D0
    PVOID       RemoteTypeOne;              // 2B4 2D4
    ULONG       ulHorzRes;                  // 2B8 2D8 slz if PDEV_META_DEVICE
    ULONG       ulVertRes;                  // 2BC 2DC get it from here.
    PFN         pfnDrvSetPointerShape;      // 2C0 2E0
    PFN         pfnDrvMovePointer;          // 2C4 2E4
    PFN         pfnMovePointer;             // 2C8 2E8 
    PFN         pfnDrvSynchronize;          // 2CC 2EC (gdikdx: pfnSync)
    PFN         pfnDrvSynchronizeSurface;   //     2F0
    PFN         pfnDrvSetPalette;           //     2F4 
    PFN         pfnDrvNotify;               //     2F8
    ULONG       TagSig;                     //     2FC = 'Pdev'
    PLDEV       pldev;                      // 2E0 300
    DHPDEV      dhpdev;                     // 2E4 304
    PPALETTE    ppalSurf;                   // 2E8 308 -> Gla8
    DEVINFO     devinfo;                    // 2EC 30C
    GDIINFO     gdiinfo;                    // 418 438 
    PSURFACE    pSurface;                   // 548 568
    HANDLE      hSpooler;                   // 54C 56C 
    PVOID       pDesktopId;                 // 550 570  
    EDD_DIRECTDRAW_GLOBAL eDirectDrawGlobal;// 558         W2k only
    PGRAPHICS_DEVICE pGraphicsDevice;       //     574
    POINTL      ptlOrigion;                 //     578 
    PDEVMODEW   pdmwDev;                    //     580
    DWORD       Unknown3;                   //     584 
    FLONG       DxDd_Flags;                 //     588 
    LONG        devAttr;                    //     58C
    PVOID       WatchDogContext;            //     590
    PVOID       WatchDogs;                  //     594
    PFN         apfn[INDEX_LAST];           // B8C 598
} PDEV, *PPDEV; // Xp size 0x70C or 1804
 
// PDEV and EDDX extra data container.
typedef struct _PDEVEDD
{
    PDEVOBJ               pdevobj;
    EDD_DIRECTDRAW_GLOBAL EDDgpl;
} PDEVEDD, *PPDEVEDD;


Members

baseobj

BASEOBJECT Structure used by the handle manager. Unused for a PDEV.

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, == HSEMAPHORE == PERESOURCE

hsemPointer

ptlPointer

Current position of the mouse pointer, if any.

szlPointer

Current dimensions of the pointer shape.

SpriteState

SPRITESTATE structure

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 LDEV.

dhpdev

Driver defined handle to the device.

ppalSurf

Pointer to a PPALETTE structure that describes the palette of the surface.

devinfo

DEVINFO

gdiinfo

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

Pointer to a single DEVMODEW structure, describing the current display settings. The size of the allocation is

DEVMODEW.dmSize + dmDriverExtra. Allocated with Tag GDITAG_DEVMODE ('Gdev').

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

Windows 2000 only. Unknown pointer to or structure to EDD_DIRECTDRAW_GLOBAL.

Remarks

  • The pool tag for the structure is 'GDev'

References