SDK-MFC 備忘録 |
Windows SDKやMFCに関するメモです。
(記載内容について正しいことを保証するものではありません。MSDN等で確認してください)
2010/9/26 作成
sdk7.0以降は、Windows7の開発環境を包含しています。
Windows7を対象とする場合、マクロ定義が
#define _WIN32_WINNT 0x0601
#define WINVER 0x0601
となりますが、これを素直にやるとカーネル呼び出しが変わってしまいます。(Win7専用のカーネルが呼び出されます)
Window7でしか実行しないプログラムなら問題ないですが、旧OSとの互換性が必要な場合は、もう一つマクロの設定が必要になります。
Psapi.hで以下のようになっており、明示的にPSAPI_VERSIONを1に設定してやる必要があります。(明示的な設定がないとWiNVERより2に設定されます。)
#ifndef PSAPI_VERSION #if (NTDDI_VERSION >= NTDDI_WIN7) #define PSAPI_VERSION 2 #else #define PSAPI_VERSION 1 #endif #endif #if (PSAPI_VERSION > 1) #define EnumProcesses K32EnumProcesses #define EnumProcessModules K32EnumProcessModules #define EnumProcessModulesEx K32EnumProcessModulesEx #define GetModuleBaseNameA K32GetModuleBaseNameA #define GetModuleBaseNameW K32GetModuleBaseNameW (以降略)
Win7でずっと開発をしているとうっかりする点です。
逆に実行環境がWin7限定の場合は、積極的に0601に設定したほうが性能的にメリットがあるのでしょうね。