【问题标题】:What is the equivalent of isWindowsServer API for VS 2008 compilerVS 2008 编译器的 isWindowsServer API 相当于什么
【发布时间】:2019-01-07 06:19:48
【问题描述】:

在我们使用 VS 2017 编译器编译的产品中,我们使用 IsWindowsServer API 检查代码是否在服务器版本的操作系统中运行,然后采取一些措施。出于某种原因,我需要将此逻辑导入到在 VS 2008 编译器上运行的旧版本产品中。 IsWindowsServer API 不能在此处使用,并给出错误 error C3861: 'strtof': identifier not found。那么我可以在这里使用的等效 API 是什么?

【问题讨论】:

    标签: c++ visual-studio visual-c++


    【解决方案1】:

    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-09
      • 2010-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多