Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygengdidebug.h
Go to the documentation of this file.
00001 #pragma once 00002 00003 typedef enum _LOG_EVENT_TYPE 00004 { 00005 EVENT_ALLOCATE, 00006 EVENT_CREATE_HANDLE, 00007 EVENT_REFERENCE, 00008 EVENT_DEREFERENCE, 00009 EVENT_LOCK, 00010 EVENT_UNLOCK, 00011 EVENT_DELETE, 00012 EVENT_FREE, 00013 EVENT_SET_OWNER, 00014 } LOG_EVENT_TYPE; 00015 00016 typedef struct _LOGENTRY 00017 { 00018 SLIST_ENTRY sleLink; 00019 LOG_EVENT_TYPE nEventType; 00020 DWORD dwProcessId; 00021 DWORD dwThreadId; 00022 ULONG ulUnique; 00023 LPARAM lParam; 00024 PVOID apvBackTrace[20]; 00025 union 00026 { 00027 ULONG_PTR data1; 00028 } data; 00029 } LOGENTRY, *PLOGENTRY; 00030 00031 #if DBG_ENABLE_EVENT_LOGGING 00032 VOID NTAPI DbgDumpEventList(PSLIST_HEADER pslh); 00033 VOID NTAPI DbgLogEvent(PSLIST_HEADER pslh, LOG_EVENT_TYPE nEventType, LPARAM lParam); 00034 VOID NTAPI DbgCleanupEventList(PSLIST_HEADER pslh); 00035 #define DBG_LOGEVENT(pslh, type, val) DbgLogEvent(pslh, type, (ULONG_PTR)val) 00036 #define DBG_INITLOG(pslh) InitializeSListHead(pslh) 00037 #define DBG_DUMP_EVENT_LIST(pslh) DbgDumpEventList(pslh) 00038 #define DBG_CLEANUP_EVENT_LIST(pslh) DbgCleanupEventList(pslh) 00039 #else 00040 #define DBG_LOGEVENT(pslh, type, val) 00041 #define DBG_INITLOG(pslh) 00042 #define DBG_DUMP_EVENT_LIST(pslh) 00043 #define DBG_CLEANUP_EVENT_LIST(pslh) 00044 #endif 00045 00046 00047 VOID NTAPI DbgDumpGdiHandleTable(VOID); 00048 ULONG NTAPI DbgCaptureStackBackTace(PVOID* pFrames, ULONG nFramesToCapture); 00049 BOOL NTAPI DbgGdiHTIntegrityCheck(VOID); 00050 VOID NTAPI DbgDumpLockedGdiHandles(VOID); 00051 00052 #define KeRosDumpStackFrames(Frames, Count) KdSystemDebugControl('DsoR', (PVOID)Frames, Count, NULL, 0, NULL, KernelMode) 00053 NTSYSAPI ULONG APIENTRY RtlWalkFrameChain(OUT PVOID *Callers, IN ULONG Count, IN ULONG Flags); 00054 00055 #if DBG 00056 void 00057 NTAPI 00058 GdiDbgPreServiceHook(ULONG ulSyscallId, PULONG_PTR pulArguments); 00059 00060 ULONG_PTR 00061 NTAPI 00062 GdiDbgPostServiceHook(ULONG ulSyscallId, ULONG_PTR ulResult); 00063 00064 #define ID_Win32PreServiceHook 'WSH0' 00065 #define ID_Win32PostServiceHook 'WSH1' 00066 00067 FORCEINLINE void 00068 GdiDbgAssertNoLocks(char * pszFile, ULONG nLine) 00069 { 00070 PTHREADINFO pti = (PTHREADINFO)PsGetCurrentThreadWin32Thread(); 00071 if (pti && pti->cExclusiveLocks != 0) 00072 { 00073 DbgPrint("(%s:%ld) There are %ld exclusive locks!\n", 00074 pszFile, nLine, pti->cExclusiveLocks); 00075 ASSERT(FALSE); 00076 } 00077 } 00078 00079 #define ASSERT_NOGDILOCKS() GdiDbgAssertNoLocks(__FILE__,__LINE__) 00080 #else 00081 #define ASSERT_NOGDILOCKS() 00082 #endif 00083 Generated on Sat May 26 2012 04:37:14 for ReactOS by
1.7.6.1
|