1 #ifndef __WIN32K_PDEVOBJ_H
2 #define __WIN32K_PDEVOBJ_H
7 PDEV_DISPLAY
= 0x00000001, /* Display device */
8 PDEV_HARDWARE_POINTER
= 0x00000002, /* Supports hardware cursor */
9 PDEV_SOFTWARE_POINTER
= 0x00000004,
10 PDEV_GOTFONTS
= 0x00000040, /* Has font driver */
11 PDEV_PRINTER
= 0x00000080,
12 PDEV_ALLOCATEDBRUSHES
= 0x00000100,
13 PDEV_HTPAL_IS_DEVPAL
= 0x00000200,
14 PDEV_DISABLED
= 0x00000400,
15 PDEV_SYNCHRONIZE_ENABLED
= 0x00000800,
16 PDEV_FONTDRIVER
= 0x00002000, /* Font device */
17 PDEV_GAMMARAMP_TABLE
= 0x00004000,
18 PDEV_UMPD
= 0x00008000,
19 PDEV_SHARED_DEVLOCK
= 0x00010000,
20 PDEV_META_DEVICE
= 0x00020000,
21 PDEV_DRIVER_PUNTED_CALL
= 0x00040000, /* Driver calls back to GDI engine */
22 PDEV_CLONE_DEVICE
= 0x00080000
25 /* Type definitions ***********************************************************/
27 typedef struct _GDIPOINTER
/* should stay private to ENG? No, part of PDEVOBJ aka HDEV aka PDEV. */
29 /* Private GDI pointer handling information, required for software emulation */
33 XLATEOBJ
*XlateObject
;
39 /* Public pointer information */
40 RECTL Exclude
; /* Required publicly for SPS_ACCEPT_EXCLUDE */
41 } GDIPOINTER
, *PGDIPOINTER
;
43 typedef struct _DEVMODEINFO
45 struct _DEVMODEINFO
*pdmiNext
;
46 struct _LDEVOBJ
*pldev
;
49 } DEVMODEINFO
, *PDEVMODEINFO
;
51 typedef struct _DEVMODEENTRY
56 } DEVMODEENTRY
, *PDEVMODEENTRY
;
58 typedef struct _GRAPHICS_DEVICE
60 WCHAR szNtDeviceName
[CCHDEVICENAME
/2];
61 WCHAR szWinDeviceName
[CCHDEVICENAME
/2];
62 struct _GRAPHICS_DEVICE
* pNextGraphicsDevice
;
63 struct _GRAPHICS_DEVICE
* pVgaDevice
;
64 PDEVICE_OBJECT DeviceObject
;
66 DWORD hkClassDriverConfig
;
67 DWORD StateFlags
; /* See DISPLAY_DEVICE_* */
69 PDEVMODEINFO pdevmodeInfo
;
71 PDEVMODEENTRY pDevModeList
;
72 LPWSTR pDiplayDrivers
;
73 LPWSTR pwszDescription
;
76 PFILE_OBJECT FileObject
;
80 } GRAPHICS_DEVICE
, *PGRAPHICS_DEVICE
;
82 typedef struct _PDEVOBJ
84 BASEOBJECT BaseObject
;
86 struct _PDEVOBJ
* ppdevNext
;
89 struct _PDEVOBJ
* ppdevParent
;
90 FLONG flFlags
; // flags
91 // FLONG flAccelerated;
92 HSEMAPHORE hsemDevLock
; /* Device lock. */
93 // HSEMAPHORE hsemPointer;
96 // SPRITESTATE SpriteState;
97 // HFONT hlfntDefault;
98 // HFONT hlfntAnsiVariable;
99 // HFONT hlfntAnsiFixed;
100 HSURF ahsurf
[HS_DDI_MAX
];
101 // PUNICODE_STRING pusPrtDataFileName;
103 // RFONT * prfntActive;
104 // RFONT * prfntInactive;
107 // ULONG cDirectDrawDisableLocks;
108 // PVOID TypeOneInfo;
109 PVOID pvGammaRamp
; /* Gamma ramp pointer. */
110 // PVOID RemoteTypeOne;
113 // PFN_DrvSetPointerShape pfnDrvSetPointerShape;
114 // PFN_DrvMovePointer pfnDrvMovePointer;
115 PFN_DrvMovePointer pfnMovePointer
;
116 // PFN_DrvSynchronize pfnDrvSynchronize;
117 // PFN_DrvSynchronizeSurface pfnDrvSynchronizeSurface;
118 // PFN_DrvSetPalette pfnDrvSetPalette;
119 // PFN_DrvNotify pfnDrvNotify;
121 struct _LDEVOBJ
* pldev
;
122 DHPDEV dhpdev
; /* DHPDEV for device. */
123 struct _PALETTE
* ppalSurf
; /* PEPALOBJ/PPALETTE for this device. */
126 PSURFACE pSurface
; /* SURFACE for this device. */
127 // HANDLE hSpooler; /* Handle to spooler, if spooler dev driver. */
129 PGRAPHICS_DEVICE pGraphicsDevice
;
131 PDEVMODEW pdmwDev
; /* Ptr->DEVMODEW.dmSize + dmDriverExtra == alloc size. */
133 FLONG DxDd_Flags
; /* DxDD active status flags. */
135 // PVOID WatchDogContext;
139 DRIVER_FUNCTIONS DriverFunctions
;
140 DRIVER_FUNCTIONS pfn
;
141 PVOID apfn
[INDEX_LAST
]; // B8C 0x0598
147 /* Stuff to keep track of software cursors; win32k gdi part */
148 UINT SafetyRemoveLevel
; /* at what level was the cursor removed?
150 UINT SafetyRemoveCount
;
151 struct _EDD_DIRECTDRAW_GLOBAL
* pEDDgpl
;
152 } PDEVOBJ
, *PPDEVOBJ
;
154 /* Globals ********************************************************************/
156 extern PPDEVOBJ gppdevPrimary
;
159 /* Function prototypes ********************************************************/
164 _In_opt_ PUNICODE_STRING pustrDevice
);
169 _Inout_ PPDEVOBJ ppdev
);
174 _In_ PPDEVOBJ ppdev
);
178 PDEVOBJ_vGetDeviceCaps(
180 _Out_ PDEVCAPS pDevCaps
);
193 #endif /* !__WIN32K_PDEVOBJ_H */