2 * GDI object common header definition
6 #ifndef __WIN32K_GDIOBJ_H
7 #define __WIN32K_GDIOBJ_H
9 /* Public GDI Object/Handle definitions */
10 #include <win32k/ntgdihdl.h>
13 typedef struct _GDI_HANDLE_TABLE
15 /* The table must be located at the beginning of this structure so it can be
18 //////////////////////////////////////////////////////////////////////////////
19 GDI_TABLE_ENTRY Entries
[GDI_HANDLE_COUNT
];
20 DEVCAPS DevCaps
; // Device Capabilities.
21 FLONG flDeviceUniq
; // Device settings uniqueness.
22 PVOID pvLangPack
; // Language Pack.
23 CFONT cfPublic
[GDI_CFONT_MAX
]; // Public Fonts.
24 DWORD dwCsbSupported1
; // OEM code-page bitfield.
25 //////////////////////////////////////////////////////////////////////////////
26 PPAGED_LOOKASIDE_LIST LookasideLists
;
31 } GDI_HANDLE_TABLE
, *PGDI_HANDLE_TABLE
;
33 extern PGDI_HANDLE_TABLE GdiHandleTable
;
35 typedef PVOID PGDIOBJ
;
37 typedef BOOL (INTERNAL_CALL
*GDICLEANUPPROC
)(PVOID ObjectBody
);
39 /* Every GDI Object must have this standard type of header.
40 * It's for thread locking. */
41 typedef struct _BASEOBJECT
45 USHORT cExclusiveLock
;
52 BASEFLAG_LOOKASIDE
= 0x80
55 BOOL INTERNAL_CALL
GDIOBJ_OwnedByCurrentProcess(HGDIOBJ ObjectHandle
);
56 VOID INTERNAL_CALL
GDIOBJ_SetOwnership(HGDIOBJ ObjectHandle
, PEPROCESS Owner
);
57 VOID INTERNAL_CALL
GDIOBJ_CopyOwnership(HGDIOBJ CopyFrom
, HGDIOBJ CopyTo
);
58 BOOL INTERNAL_CALL
GDIOBJ_ConvertToStockObj(HGDIOBJ
*hObj
);
59 VOID INTERNAL_CALL
GDIOBJ_UnlockObjByPtr(POBJ Object
);
60 VOID INTERNAL_CALL
GDIOBJ_ShareUnlockObjByPtr(POBJ Object
);
61 BOOL INTERNAL_CALL
GDIOBJ_ValidateHandle(HGDIOBJ hObj
, ULONG ObjectType
);
62 POBJ INTERNAL_CALL
GDIOBJ_AllocObj(UCHAR ObjectType
);
63 POBJ INTERNAL_CALL
GDIOBJ_AllocObjWithHandle(ULONG ObjectType
);
64 VOID INTERNAL_CALL
GDIOBJ_FreeObj (POBJ pObj
, UCHAR ObjectType
);
65 BOOL INTERNAL_CALL
GDIOBJ_FreeObjByHandle (HGDIOBJ hObj
, DWORD ObjectType
);
66 PGDIOBJ INTERNAL_CALL
GDIOBJ_LockObj (HGDIOBJ hObj
, DWORD ObjectType
);
67 PGDIOBJ INTERNAL_CALL
GDIOBJ_ShareLockObj (HGDIOBJ hObj
, DWORD ObjectType
);
69 PVOID INTERNAL_CALL
GDI_MapHandleTable(PSECTION_OBJECT SectionObject
, PEPROCESS Process
);
71 #define GDIOBJ_GetObjectType(Handle) \
72 GDI_HANDLE_GET_TYPE(Handle)
74 #define GDIOBJFLAG_DEFAULT (0x0)
75 #define GDIOBJFLAG_IGNOREPID (0x1)
76 #define GDIOBJFLAG_IGNORELOCK (0x2)
78 BOOL FASTCALL
NtGdiDeleteObject(HGDIOBJ hObject
);
79 BOOL FASTCALL
IsObjectDead(HGDIOBJ
);