在使用VS 2017编译器编译的产品中,我们使用IsWindowsServer API检查代码是否在服务器版本的OS中运行,然后采取一些措施。由于某些原因,我需要将此逻辑导入到我们的产品的较旧版本中,该产品在VS 2008编译器上运行。 IsWindowsServer API不能在此处使用,并给出错误错误C3861:'strtof':找不到标识符。那么我在这里可以使用的等效API是什么?
答案 0 :(得分:2)
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);
}
与VS2008捆绑在一起的SDK中应该有两个从属API VerSetConditionMask和VerifyVersionInfo。