我试图在执行 win32 程序期间查看 CRITICAL_SECTION 的 DebugInfo,在使用 InitializeCriticalSection 后,DebugInfo 指针为 -1。
CRITICAL_SECTION myCS;
InitializeCriticalSection(&myCS);
printf("%d", myCS.DebugInfo); // prints: -1
我还尝试了 InitializeCriticalSectionEx(&myCS, 4000, 0);
并得到了相同的结果。无论我是否进入这个关键部分,也会得到同样的东西。是否可以访问此 DebugInfo,应该如何访问?
最佳答案
这是一个老问题,但没有答案。
您可以通过使用 RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO
标志调用 InitializeCriticalSectionEx
来强制创建 DebugInfo
结构:
InitializeCriticalSectionEx(&cs, 4000, RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO);
此标志不包含在 Microsoft InitializeCriticalSectionEx documentation 中,但它是在 winnt.h
关于CRITICAL_SECTION 没有 DebugInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24330452/