0

コード スキャンまたはバイナリ スキャンに基づいて、Windows API の互換性をスキャンできるツールを探しています。たとえば、INetFwPolicy2 の最小サポート クライアントは Windows Vista を必要とするため、XP で使用すると失敗します。このような OS の非互換性の問題を掘り下げるツールまたは簡単な方法があるかどうか疑問に思っています。ありがとう。

4

1 に答える 1

2

これには「ツール」は必要ありません。SDK ヘッダーは、バージョンの互換性に敏感なインクルード ガードで既に慎重に保護されています。

を含める前に、対象となる Windows のバージョンを定義するだけです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>

組み込みのテンプレートの 1 つを使用して新しいプロジェクトを作成すると、Visual Studio はこれを自動的に行います。

SDK ドキュメントには、さまざまな Windows バージョンを対象とするために必要な値の完全なリストが記載されています。ただし、必要になる最も一般的なものは_WIN32_WINNT_WINXP、Windows XP、_WIN32_WINNT_VISTAWindows Vista/Server 2008、_WIN32_WINNT_WIN7Windows 7/Server 2008 R2、および_WIN32_WINNT_WIN8Windows 8 用です。

于 2013-03-12T13:44:56.060 に答える