1 #ifndef __WIN32K_PDEVOBJ_H
2 #define __WIN32K_PDEVOBJ_H
5 #define PDEV_DISPLAY 0x00000001 /* Display device */
6 #define PDEV_HARDWARE_POINTER 0x00000002 /* Supports hardware cursor */
7 #define PDEV_SOFTWARE_POINTER 0x00000004
8 #define PDEV_GOTFONTS 0x00000040 /* Has font driver */
9 #define PDEV_PRINTER 0x00000080
10 #define PDEV_ALLOCATEDBRUSHES 0x00000100
11 #define PDEV_HTPAL_IS_DEVPAL 0x00000200
12 #define PDEV_DISABLED 0x00000400
13 #define PDEV_SYNCHRONIZE_ENABLED 0x00000800
14 #define PDEV_FONTDRIVER 0x00002000 /* Font device */
15 #define PDEV_GAMMARAMP_TABLE 0x00004000
16 #define PDEV_UMPD 0x00008000
17 #define PDEV_SHARED_DEVLOCK 0x00010000
18 #define PDEV_META_DEVICE 0x00020000
19 #define PDEV_DRIVER_PUNTED_CALL 0x00040000 /* Driver calls back to GDI engine */
20 #define PDEV_CLONE_DEVICE 0x00080000
22 /* Type definitions ***********************************************************/
24 typedef struct _GDIPOINTER
/* should stay private to ENG? No, part of PDEVOBJ aka HDEV aka PDEV. */
26 /* private GDI pointer handling information, required for software emulation */
30 XLATEOBJ
*XlateObject
;
34 int ShowPointer
; /* counter negtive do not show the mouse postive show the mouse */
36 /* public pointer information */
37 RECTL Exclude
; /* required publicly for SPS_ACCEPT_EXCLUDE */
38 } GDIPOINTER
, *PGDIPOINTER
;
40 typedef struct _GRAPHICS_DEVICE
42 CHAR szNtDeviceName
[CCHDEVICENAME
]; /* Yes char AscII */
43 CHAR szWinDeviceName
[CCHDEVICENAME
]; /* <- chk GetMonitorInfoW MxIxEX.szDevice */
44 struct _GRAPHICS_DEVICE
* pNextGraphicsDevice
;
45 DWORD StateFlags
; /* See DISPLAY_DEVICE_* */
46 } GRAPHICS_DEVICE
, *PGRAPHICS_DEVICE
;
48 typedef struct _PDEVOBJ
50 BASEOBJECT BaseObject
;
52 struct _PDEVOBJ
* ppdevNext
;
55 struct _PDEVOBJ
* ppdevParent
;
56 FLONG flFlags
; // flags
57 // FLONG flAccelerated;
58 PERESOURCE hsemDevLock
; /* Device lock. */
59 // HSEMAPHORE hsemPointer;
62 // SPRITESTATE SpriteState;
63 // HFONT hlfntDefault;
64 // HFONT hlfntAnsiVariable;
65 // HFONT hlfntAnsiFixed;
66 HSURF FillPatterns
[HS_DDI_MAX
]; // ahsurf[HS_DDI_MAX];
67 // PUNICODE_STRING pusPrtDataFileName;
69 // RFONT * prfntActive;
70 // RFONT * prfntInactive;
73 // ULONG cDirectDrawDisableLocks;
75 PVOID pvGammaRamp
; /* Gamma ramp pointer. */
76 // PVOID RemoteTypeOne;
79 // PFN_DrvSetPointerShape pfnDrvSetPointerShape;
80 // PFN_DrvMovePointer pfnDrvMovePointer;
81 PFN_DrvMovePointer pfnMovePointer
;
82 // PFN_DrvSynchronize pfnDrvSynchronize;
83 // PFN_DrvSynchronizeSurface pfnDrvSynchronizeSurface;
84 // PFN_DrvSetPalette pfnDrvSetPalette;
85 // PFN_DrvNotify pfnDrvNotify;
88 DHPDEV hPDev
; /* dhpdev, DHPDEV for device. */
89 PVOID ppalSurf
; /* PEPALOBJ/PPALETTE for this device. */
90 DEVINFO DevInfo
; // devinfo
91 GDIINFO GDIInfo
; // gdiinfo
92 HSURF pSurface
; /* SURFACE for this device., FIXME: PSURFACE */
93 // HANDLE hSpooler; /* Handle to spooler, if spooler dev driver. */
95 PGRAPHICS_DEVICE pGraphicsDev
; /* pGraphicsDevice */
97 PVOID pdmwDev
; /* Ptr->DEVMODEW.dmSize + dmDriverExtra == alloc size. */
99 FLONG DxDd_Flags
; /* DxDD active status flags. */
101 // PVOID WatchDogContext;
105 DRIVER_FUNCTIONS DriverFunctions
;
106 PVOID apfn
[INDEX_LAST
]; // B8C 0x0598
113 PFILE_OBJECT VideoFileObject
;
114 BOOLEAN PreparedDriver
;
116 /* Stuff to keep track of software cursors; win32k gdi part */
117 UINT SafetyRemoveLevel
; /* at what level was the cursor removed?
119 UINT SafetyRemoveCount
;
120 struct _EDD_DIRECTDRAW_GLOBAL
* pEDDgpl
;
121 } PDEVOBJ
, *PPDEVOBJ
;
123 #endif /* !__WIN32K_PDEVOBJ_H */