3 typedef enum _LOG_EVENT_TYPE
16 typedef struct _LOGENTRY
19 LOG_EVENT_TYPE nEventType
;
24 PVOID apvBackTrace
[20];
29 } LOGENTRY
, *PLOGENTRY
;
34 DbgGdiKdbgCliCallback(
40 #if DBG_ENABLE_EVENT_LOGGING
41 VOID NTAPI
DbgDumpEventList(PSLIST_HEADER pslh
);
42 VOID NTAPI
DbgLogEvent(PSLIST_HEADER pslh
, LOG_EVENT_TYPE nEventType
, LPARAM lParam
);
43 VOID NTAPI
DbgCleanupEventList(PSLIST_HEADER pslh
);
44 VOID NTAPI
DbgPrintEvent(PLOGENTRY pLogEntry
);
45 #define DBG_LOGEVENT(pslh, type, val) DbgLogEvent(pslh, type, (ULONG_PTR)val)
46 #define DBG_INITLOG(pslh) InitializeSListHead(pslh)
47 #define DBG_DUMP_EVENT_LIST(pslh) DbgDumpEventList(pslh)
48 #define DBG_CLEANUP_EVENT_LIST(pslh) DbgCleanupEventList(pslh)
50 #define DBG_LOGEVENT(pslh, type, val) ((void)(val))
51 #define DBG_INITLOG(pslh)
52 #define DBG_DUMP_EVENT_LIST(pslh)
53 #define DBG_CLEANUP_EVENT_LIST(pslh)
57 VOID NTAPI
DbgDumpGdiHandleTableWithBT(VOID
);
58 ULONG NTAPI
DbgCaptureStackBackTace(PVOID
* pFrames
, ULONG nFramesToCapture
);
59 BOOL NTAPI
DbgGdiHTIntegrityCheck(VOID
);
60 VOID NTAPI
DbgDumpLockedGdiHandles(VOID
);
62 #define KeRosDumpStackFrames(Frames, Count) KdSystemDebugControl('DsoR', (PVOID)Frames, Count, NULL, 0, NULL, KernelMode)
63 NTSYSAPI ULONG APIENTRY
RtlWalkFrameChain(OUT PVOID
*Callers
, IN ULONG Count
, IN ULONG Flags
);
68 GdiDbgPreServiceHook(ULONG ulSyscallId
, PULONG_PTR pulArguments
);
72 GdiDbgPostServiceHook(ULONG ulSyscallId
, ULONG_PTR ulResult
);
74 #define ID_Win32PreServiceHook 'WSH0'
75 #define ID_Win32PostServiceHook 'WSH1'
78 GdiDbgAssertNoLocks(char * pszFile
, ULONG nLine
)
80 PTHREADINFO pti
= (PTHREADINFO
)PsGetCurrentThreadWin32Thread();
81 if (pti
&& pti
->cExclusiveLocks
!= 0)
83 DbgPrint("(%s:%lu) There are %lu exclusive locks!\n",
84 pszFile
, nLine
, pti
->cExclusiveLocks
);
89 #define ASSERT_NOGDILOCKS() GdiDbgAssertNoLocks(__FILE__,__LINE__)
91 #define ASSERT_NOGDILOCKS()