2 * GDI object common header definition
8 /* Public GDI Object/Handle definitions */
9 #include <win32k/ntgdihdl.h>
12 /* The first 10 entries are never used in windows, they are empty */
13 #define RESERVE_ENTRIES_COUNT 10
15 typedef struct _GDI_HANDLE_TABLE
17 /* The table must be located at the beginning of this structure so it can be
20 //////////////////////////////////////////////////////////////////////////////
21 GDI_TABLE_ENTRY Entries
[GDI_HANDLE_COUNT
];
22 DEVCAPS DevCaps
; // Device Capabilities.
23 FLONG flDeviceUniq
; // Device settings uniqueness.
24 PVOID pvLangPack
; // Language Pack.
25 CFONT cfPublic
[GDI_CFONT_MAX
]; // Public Fonts.
29 } GDI_HANDLE_TABLE
, *PGDI_HANDLE_TABLE
;
31 extern PGDI_HANDLE_TABLE GdiHandleTable
;
33 typedef PVOID PGDIOBJ
;
35 typedef BOOL (INTERNAL_CALL
*GDICLEANUPPROC
)(PVOID ObjectBody
);
37 /* Every GDI Object must have this standard type of header.
38 * It's for thread locking. */
39 typedef struct _BASEOBJECT
43 ULONG ulShareCount
; /* For objects without a handle */
44 DWORD dwThreadId
; /* Exclusive lock owner */
46 USHORT cExclusiveLock
;
48 EX_PUSH_LOCK pushlock
;
49 #if DBG_ENABLE_EVENT_LOGGING
56 BASEFLAG_LOOKASIDE
= 0x80,
58 /* ReactOS specific: */
59 BASEFLAG_READY_TO_DIE
= 0x1000
62 typedef struct _CLIENTOBJ
64 BASEOBJECT BaseObject
;
65 } CLIENTOBJ
, *PCLIENTOBJ
;
67 #define GDIOBJFLAG_DEFAULT (0x0)
68 #define GDIOBJFLAG_IGNOREPID (0x1)
69 #define GDIOBJFLAG_IGNORELOCK (0x2)
74 InitGdiHandleTable(VOID
);
106 GDIOBJ_AllocateObject(
113 GDIOBJ_vDeleteObject(
118 GDIOBJ_ReferenceObjectByHandle(
124 GDIOBJ_vReferenceObjectByPointer(
129 GDIOBJ_vDereferenceObject(
140 GDIOBJ_vUnlockObject(
145 GDIOBJ_vSetObjectOwner(
151 GDIOBJ_bLockMultipleObjects(
159 GDIOBJ_hInsertObject(
170 GDIOBJ_vSetObjectAttr(
176 GDIOBJ_pvGetObjectAttr(
179 BOOL INTERNAL_CALL
GDIOBJ_ConvertToStockObj(HGDIOBJ
*hObj
);
180 POBJ INTERNAL_CALL
GDIOBJ_AllocObjWithHandle(ULONG ObjectType
, ULONG cjSize
);
181 PGDIOBJ INTERNAL_CALL
GDIOBJ_ShareLockObj(HGDIOBJ hObj
, DWORD ObjectType
);
182 PVOID INTERNAL_CALL
GDI_MapHandleTable(PEPROCESS Process
);