0

我正在寻找一种可以扫描windows api兼容性的工具,它是基于代码扫描还是二进制扫描。比如INetFwPolicy2的Minimum supported client需要Windows Vista,所以如果用在XP上就会失败。我想知道是否有一种工具或一种简单的方法可以挖掘出此类操作系统不兼容的问题?谢谢。

4

1 回答 1

2

您不需要为此使用“工具”;SDK 标头已经通过对版本兼容性敏感的包含防护进行了仔细保护。

您需要做的就是包含windows.h. 目标版本不支持的任何符号甚至都不会在标头中定义,从而导致编译时错误。

例如,在您的预编译头文件中,您可能有:

// Including SDKDDKVer.h defines the highest available Windows platform.
// 
// If you wish to build your application for a previous Windows platform,
// include WinSDKVer.h and set the _WIN32_WINNT macro to the platform
// you wish to support before including SDKDDKVer.h.
#include <WinSDKVer.h>
#define _WIN32_WINNT  _WIN32_WINNT_WINXP   // target Windows XP
#include <SDKDDKVer.h>

#include <Windows.h>

当您使用其中一个内置模板创建新项目时,Visual Studio 甚至会自动为您执行此操作。

SDK 文档提供了针对各种 Windows 版本所需的值的完整列表。但最常见的是_WIN32_WINNT_WINXPWindows XP、_WIN32_WINNT_VISTAWindows Vista/Server 2008、_WIN32_WINNT_WIN7Windows 7/Server 2008 R2 和_WIN32_WINNT_WIN8Windows 8。

于 2013-03-12T13:44:56.060 回答