CRITICAL_SECTION 没有 DebugInfo

标签 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,应该如何访问?

最佳答案

这是一个老问题,但没有答案。

您可以通过使用 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/

相关文章:

用 C 编写的程序可以比用 OCaml 编写并翻译成 C 的程序更快吗?

windows - 故障桶到底是什么,它的成因是什么?

C# - 如何在多显示器上下文中获得真实的屏幕分辨率?

multithreading - Delphi线程: CriticalSection not being "Release' d"when using Synchronize inside its method

c++ - 应用程序在 CCriticalSection::Lock 上中断

c - 识别 C 语法

c - 尝试从 C 文本文件中读取信息

c++ - 是否有 linuxthreads 和 nptel 的特定定义

c++ - Windows API SysWOW 重定向意外行为

windows - Mutex 是否调用系统调用?