在我们使用 VS 2017 编译器编译的产品中,我们使用 IsWindowsServer API 检查代码是否在服务器版本操作系统中运行,然后采取一些措施。出于某种原因,我需要将此逻辑导入我们在 VS 2008 编译器上运行的产品的旧版本。此处无法使用 IsWindowsServer API,并给出错误错误 C3861:“strtof”:找不到标识符。那么我可以在这里使用的等效 API 是什么?
最佳答案
IsWindowsServer 本身不是 API。真是<versionhelpers.h>
中定义的宏包装 VerifyVersionInfo .这是实现:
#include <windows.h>
bool IsWindowsServer()
{
OSVERSIONINFOEXW osvi = { sizeof(osvi), 0, 0, 0, 0, {0}, 0, 0, 0, VER_NT_WORKSTATION };
DWORDLONG const dwlConditionMask = VerSetConditionMask( 0, VER_PRODUCT_TYPE, VER_EQUAL );
return !VerifyVersionInfoW(&osvi, VER_PRODUCT_TYPE, dwlConditionMask);
}
两个依赖的 API VerSetConditionMask 和 VerifyVersionInfo 应该在与 VS2008 捆绑在一起的 SDK 中可用。
关于c++ - 什么是 isWindowsServer API for VS 2008 编译器的等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54069371/