閉じる

‘GetVersionExW’: が古い形式として宣言されました。

日本語のエラーメッセージを見るとよく意味がわからないけど、ヘッダに書かれている「__drv_preferredFunction(“IsWindows*”, “Deprecated. Use VerifyVersionInfo* or IsWindows* macros from VersionHelpers.”)」を見ると、「VerifyVersionInfoを使うか、IsWindows*マクロを使うように」という事だとわかる。
ただ、VerifyVersionInfoを使うというのはわかるのだけど、IsWindows*マクロというのはどこで定義されているのだろう?
文言からすると、「IsWindows8()とか IsWindows7()とかどこかにあるのだろうか?」

で、自分のコードなら VerifyVersionInfoなりなんなりを使って書き直すのは吝かではないのだけど、MultiMon.hがこのエラーを出してくれるのよね。
ほめられた対応ではないけど、includeしている側で「#pragma warning(disable:4996)」を記述して逃げ。

2014/05/12追記

代替となる IsWindows*マクロというのを調べてみた。 <Windows Kits\8.1\Include\um\VersionHelpers.h

IsWindowsXPOrGreater,IsWindowsXPSP1OrGreaterってな感じで特定の OS以降のバージョンかを調べる物や、それらのヘルパー関数である IsWindowsVersionOrGreater、サーバか否かを調べる IsWindowsServerってな関数が定義されている。
ちなみに IsWindows2000OrGreaterや IsWindows98OrGreaterというのは定義されていない。
まぁ VerifyVersionInfoW自体はかなり柔軟に作られているので必要なら自分で作るのは難しくない。

ただ、自分ところのヘッダでエラーを出してビルドできない状態や純粋にプラットフォームを調べるためだけの GetVersionExをも排除しちゃうのは何とかして欲しいところ。

コメントを残す

メールアドレスが公開されることはありません。必須項目には印がついています *

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)