使用 WTSEnumerateSessionsEx 的 C6387 警告

C6387 warning with WTSEnumerateSessionsEx

提问人:Oleg Korzhukov 提问时间:9/8/2021 更新时间:9/8/2021 访问量:252

问:

我在尝试调用 时收到 C6387 警告。这是我的代码(按预期工作):WTSEnumerateSessionsEx

WTS_SESSION_INFO_1* info=NULL;
DWORD info_count = 0;
DWORD level = 1;
WTSEnumerateSessionsEx(WTS_CURRENT_SERVER_HANDLE, &level, 0, &info, &info_count);

谁能解释一下发生了什么以及如何解决这个问题?

下面是 Visual Studio 2019 的屏幕截图:

enter image description here

C++ Visual-Studio WinAPI 警告

评论

2赞 RbMm 9/8/2021
但是 learn.microsoft.com/en-us/cpp/code-quality/c6387 有什么不清楚的?通过注释 api,不要在第一个参数中等待 0,而是传递 0。这简直是糟糕的编年史。忽略此警告
0赞 Oleg Korzhukov 9/8/2021
谢谢你的玩具回答,RbMm。我很确定他们从零开始计算参数,并认为问题出在“级别”上。现在我看到WTS_CURRENT_SERVER_HANDLE为 NULL。我将尝试向 MS 报告错误的注释。

答:

0赞 Oleg Korzhukov 9/8/2021 #1

正如 RbMm 所提到的,这是一个误导性的函数注释。我已经向 MS 提交了一份报告,希望他们有一天能修复它。至于现在,警告是这样抑制的:

#pragma warning(suppress: 6387)
WTSEnumerateSessionsEx(WTS_CURRENT_SERVER_HANDLE, &level, 0, &info, &info_count);

评论

0赞 Remy Lebeau 9/9/2021
您应该修改您的报告以包含解决方案 - 第一个参数应注释为 而不是_In_opt__In_