#pragma once
+#define GDI_OBJECT_STACK_LEVELS 20
+
/* The first 10 entries are never used in windows, they are empty */
static const unsigned RESERVE_ENTRIES_COUNT = 10;
typedef PVOID PGDIOBJ;
-typedef BOOL (NTAPI *GDICLEANUPPROC)(PVOID ObjectBody);
+typedef VOID (NTAPI *GDICLEANUPPROC)(PVOID ObjectBody);
+typedef VOID (NTAPI *GDIOBJDELETEPROC)(PVOID ObjectBody);
/* Every GDI Object must have this standard type of header.
* It's for thread locking. */
USHORT cExclusiveLock;
USHORT BaseFlags;
EX_PUSH_LOCK pushlock;
+#if DBG_ENABLE_GDIOBJ_BACKTRACES
+ PVOID apvBackTrace[GDI_OBJECT_STACK_LEVELS];
+#endif
#if DBG_ENABLE_EVENT_LOGGING
SLIST_HEADER slhLog;
#endif
GreGetObject(
IN HGDIOBJ hobj,
IN INT cbCount,
- IN PVOID pvBuffer);
+ OUT PVOID pvBuffer);
POBJ
NTAPI