c++ - VS 2008 编译器的 isWindowsServer API 相当于什么
问题描述
在我们使用 VS 2017 编译器编译的产品中,我们使用 IsWindowsServer API 检查代码是否在服务器版本的操作系统中运行,然后采取一些措施。出于某种原因,我需要将此逻辑导入到在 VS 2008 编译器上运行的旧版本产品中。IsWindowsServer API 不能在此处使用,并给出错误 error C3861: 'strtof': identifier not found。那么我可以在这里使用的等效 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);
}
与 VS2008 捆绑的 SDK 中应该有两个依赖的 API VerSetConditionMask 和 VerifyVersionInfo。
推荐阅读
- javascript - 存储排序功能更改结果
- react-native - 如何对 Flatlist/SectionList 中的项目重新排序
- php - 日期时间格式不起作用。如何将它与碳一起使用?
- chart.js - 如何垂直堆叠时间图表
- python - Django 的 NotImplementedError:聚合()+不同(字段)未实现
- swift - 从 autoID 节点中检索值
- javascript - 如何在单击到/从隐藏输入中的逗号分隔列表中添加/删除属性值
- javascript - 检查 typeof !== 'object' 会破坏文件中的导出
- android - React Native Android:任务:app:validateSigningRelease FAILED
- excel - Excel:识别缺失 sku 的公式