質問: 訳あって、古いWindows(9x系列~XP,Vista)でも動くアプリケーションに手を入れなくてはならないのですが、現行のWin32APIマニュアルだとどのバージョンからそのAPIが使えるかわからないのです。 古いWin32APIマニュアルなど、9x系列のマニュアルはすごく古いVisual C++に付属しているのですが、Visual C++ .Netあたりからオンラインマニュアルになっており、現状では参照できないURLも多々あります。 これら古いSDKのマニュアル等は何処かにアーカイブされているのでしょうか?それとも古い書籍を参照するのでしょうか? Microsoftから様々なSDKがリリースされてはサポートが終了していきますが、それらレガシーSDKのマニュアル(リファレンスやチュートリアルでも構いません)の所在をご存じの方、いらっしゃいましたら情報お願い致します。 古いマニュアルであればWin32APIに関わらず知りたいです。宜しくお願い致します。
回答: 本題の趣旨とはちょっと外れますが。。。 あまり知られていないことですが、Windows のバージョンアップ等に伴い廃止された API のほとんどは、最新の Windows 10 でも存在しています。 (だから、ある程度の下位互換が実現できてるわけです。) ではなぜ使えないのかというと、最新の開発環境 (Visual Studio/SDK) で提供されるライブラリ ファイル (*.lib) では、それら廃止された API のエントリが削除されているので結果的にビルドが通らない (リンク エラーになる) 。。。ということで、OS がサポートしているかどうかとは別次元の話なのです。 つまり、使用したい API が実装されている DLL のファイル名さえわかれば、LoadLibrary() / GetProcAddress() を組み合わせることで、継続的な利用が可能なのです。 で、この時問題となるのが、「ぢゃぁ、その DLL のファイル名はなに?」ということです。 廃止された API は、別の DLL ファイルに移動されている場合が多々あるので、古い API リファレンスに書いてある DLL ファイルに存在していない可能性があるのです。 これは、適当なプロセスを選んで WinDBG でデバッグすれば、解決することができます。 ちなみに。。。 逆説的な話になりますが、同様の方法で、古い Visual Studio や SDK を使用している場合でも、最新 OS で追加された新しい API を利用することが可能です。