CRITICAL_SECTION没有DebugInfo

时间:2014-06-20 15:13:11

标签: c winapi critical-section

我正在尝试在执行win32程序时查看我的CRITICAL_SECTION的DebugInfo,并且在使用InitializeCriticalSection之后,DebugInfo指针为-1。

CRITICAL_SECTION myCS;
InitializeCriticalSection(&myCS);
printf("%d", myCS.DebugInfo); // prints:  -1

我也试过了InitializeCriticalSectionEx(&myCS, 4000, 0);并得到了相同的结果。无论我是否已进入此关键部分,也会得到相同的结果。是否可以访问此DebugInfo,以及如何完成?

1 个答案:

答案 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上定义