我正在尝试在执行win32程序时查看我的CRITICAL_SECTION的DebugInfo,并且在使用InitializeCriticalSection之后,DebugInfo指针为-1。
CRITICAL_SECTION myCS;
InitializeCriticalSection(&myCS);
printf("%d", myCS.DebugInfo); // prints: -1
我也试过了InitializeCriticalSectionEx(&myCS, 4000, 0);
并得到了相同的结果。无论我是否已进入此关键部分,也会得到相同的结果。是否可以访问此DebugInfo,以及如何完成?
答案 0 :(得分:4)
这是一个古老的问题,但尚未得到答案。
您可以通过使用带有DebugInfo
标志的InitializeCriticalSectionEx
来强制创建RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
结构:
InitializeCriticalSectionEx(&cs, 4000, RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO);
此标志未包含在Microsoft InitializeCriticalSectionEx documentation上,但已在winnt.h
上定义