3 #define GDI_DBG_MAX_BTS 10
5 #if DBG && defined(KDBG)
6 #define ASSERT_NOGDILOCKS() GdiDbgAssertNoLocks(__FILE__,__LINE__)
7 #define KeRosDumpStackFrames(Frames, Count) \
8 KdSystemDebugControl('DsoR', (PVOID)Frames, Count, NULL, 0, NULL, KernelMode)
10 #define ASSERT_NOGDILOCKS()
11 #define KeRosDumpStackFrames(Frames, Count)
16 DbgCaptureStackBackTace(
17 _Out_writes_(cFramesToCapture
) PVOID
* ppvFrames
,
18 _In_ ULONG cFramesToSkip
,
19 _In_ ULONG cFramesToCapture
);
23 DbgGdiHTIntegrityCheck(
28 DbgDumpLockedGdiHandles(
31 #if DBG_ENABLE_GDIOBJ_BACKTRACES
35 DbgDumpGdiHandleTableWithBT(VOID
);
43 DbgGdiKdbgCliCallback(
50 #if DBG_ENABLE_EVENT_LOGGING
52 typedef enum _LOG_EVENT_TYPE
65 typedef struct _LOGENTRY
68 LOG_EVENT_TYPE nEventType
;
73 PVOID apvBackTrace
[20];
78 } LOGENTRY
, *PLOGENTRY
;
83 _Inout_ PSLIST_HEADER pslh
);
88 _Inout_ PSLIST_HEADER pslh
,
89 _In_ LOG_EVENT_TYPE nEventType
,
95 _Inout_ PSLIST_HEADER pslh
);
100 _Inout_ PLOGENTRY pLogEntry
);
102 #define DBG_LOGEVENT(pslh, type, val) DbgLogEvent(pslh, type, (ULONG_PTR)val)
103 #define DBG_INITLOG(pslh) InitializeSListHead(pslh)
104 #define DBG_DUMP_EVENT_LIST(pslh) DbgDumpEventList(pslh)
105 #define DBG_CLEANUP_EVENT_LIST(pslh) DbgCleanupEventList(pslh)
109 #define DBG_LOGEVENT(pslh, type, val) ((void)(val))
110 #define DBG_INITLOG(pslh)
111 #define DBG_DUMP_EVENT_LIST(pslh)
112 #define DBG_CLEANUP_EVENT_LIST(pslh)
119 GdiDbgPreServiceHook(ULONG ulSyscallId
, PULONG_PTR pulArguments
);
123 GdiDbgPostServiceHook(ULONG ulSyscallId
, ULONG_PTR ulResult
);
125 #define ID_Win32PreServiceHook 'WSH0'
126 #define ID_Win32PostServiceHook 'WSH1'
130 GdiDbgAssertNoLocks(char * pszFile
, ULONG nLine
)
132 PTHREADINFO pti
= (PTHREADINFO
)PsGetCurrentThreadWin32Thread();
133 if (pti
&& pti
->cExclusiveLocks
!= 0)
136 DbgPrint("(%s:%lu) There are %lu exclusive locks!\n",
137 pszFile
, nLine
, pti
->cExclusiveLocks
);
138 for (i
= 0; i
< (GDIObjTypeTotal
+ 1); i
++)
139 DbgPrint(" Type %u: %u.\n", i
, pti
->acExclusiveLockCount
[i
]);
143 #endif // __cplusplus