3 typedef enum _LOG_EVENT_TYPE
16 typedef struct _LOGENTRY
19 LOG_EVENT_TYPE nEventType
;
24 PVOID apvBackTrace
[20];
29 } LOGENTRY
, *PLOGENTRY
;
31 #if DBG_ENABLE_EVENT_LOGGING
32 VOID NTAPI
DbgDumpEventList(PSLIST_HEADER pslh
);
33 VOID NTAPI
DbgLogEvent(PSLIST_HEADER pslh
, EVENT_TYPE nEventType
, LPARAM lParam
);
34 VOID NTAPI
DbgCleanupEventList(PSLIST_HEADER pslh
);
35 #define DBG_LOGEVENT(pslh, type, val) DbgLogEvent(pslh, type, (ULONG_PTR)val)
36 #define DBG_INITLOG(pslh) InitializeSListHead(pslh)
37 #define DBG_DUMP_EVENT_LIST(pslh) DbgDumpEventList(pslh)
38 #define DBG_CLEANUP_EVENT_LIST(pslh) DbgCleanupEventList(pslh)
40 #define DBG_LOGEVENT(pslh, type, val)
41 #define DBG_INITLOG(pslh)
42 #define DBG_DUMP_EVENT_LIST(pslh)
43 #define DBG_CLEANUP_EVENT_LIST(pslh)
46 extern ULONG gulLogUnique
;
48 extern ULONG gulDebugChannels
;
59 VOID NTAPI
DbgDumpGdiHandleTable(VOID
);
60 ULONG NTAPI
DbgCaptureStackBackTace(PVOID
* pFrames
, ULONG nFramesToCapture
);
61 BOOL NTAPI
DbgGdiHTIntegrityCheck(VOID
);
62 VOID NTAPI
DbgDumpLockedGdiHandles(VOID
);
64 #define DBGENABLE(ch) gulDebugChannels |= (ch);
65 #define DBGDISABLE(ch) gulDebugChannels &= ~(ch);
66 #define DPRINTCH(ch) if (gulDebugChannels & (ch)) DbgPrint
68 #define KeRosDumpStackFrames(Frames, Count) KdSystemDebugControl('DsoR', (PVOID)Frames, Count, NULL, 0, NULL, KernelMode)
69 NTSYSAPI ULONG APIENTRY
RtlWalkFrameChain(OUT PVOID
*Callers
, IN ULONG Count
, IN ULONG Flags
);
74 DbgPreServiceHook(ULONG ulSyscallId
, PULONG_PTR pulArguments
);
78 DbgPostServiceHook(ULONG ulSyscallId
, ULONG_PTR ulResult
);
80 #define ID_Win32PreServiceHook 'WSH0'
81 #define ID_Win32PostServiceHook 'WSH1'
84 GdiDbgAssertNoLocks(char * pszFile
, ULONG nLine
)
86 PTHREADINFO pti
= (PTHREADINFO
)PsGetCurrentThreadWin32Thread();
87 if (pti
&& pti
->cExclusiveLocks
!= 0)
89 DbgPrint("(%s:%ld) There are %ld exclusive locks!\n",
90 pszFile
, nLine
, pti
->cExclusiveLocks
);
95 #define ASSERT_NOGDILOCKS() GdiDbgAssertNoLocks(__FILE__,__LINE__)
97 #define ASSERT_NOGDILOCKS()