EternalWindows
MSDNの参照

MSDN(Microsoft Developer Network)とは、Microsoftの製品を扱う開発者に対して技術情報を提供するwebサイトです。 MSDNにはほぼ全てのWindows APIのリファレンスが掲載されており、 新しい技術について解説する記事なども豊富に用意されているため、 開発者は可能な限りMSDNを参照するべきであるといえます。 また、MSDNはMicrosoftによって運営されているということもあり、 そこで得られる情報はほぼ例外なく信頼できるものです。 こうした意味でも開発者は、MSDNを参照することによって正しい知識を身に付けておく必要があります。 MSDNに書かれている情報は非常に膨大ですが、 これら全てを覚えなければならないというようなことは全くありません。 自分にとって必要な技術を取捨選択するという視点を持っていただければと思います。

MSDNには日本語版のサイトと英語版のサイトがありますが、 情報の多さや正しさという点で英語版の方が勝ります。 次に、英語版MSDNのURLを示します。

http://msdn.microsoft.com/en-us/library/default.aspx

上記URLにアクセスすると次に示すようなページが表示されます。

MSDNを参照するには、まず左側のペインから目的の情報を選択することになります。 ここで言う目的の情報とは開発者によって様々ですが、私たちのようにWindows APIを呼び出す開発者は 原則として「Win32 and COM Development」以下を参照することになります。 この項目を展開すると次のような項目が表示されます。

Windowsに存在する各技術は、上記のような項目名でいくつかに分類されています。 この時点で、自分が探そうとしている技術がどこに含まれているかを推測するのは難しいといえますが、 このようなときは取り敢えず何らかの項目を展開するのが一番ではないかと思われます。 例として、「System Services」という名前の項目を展開してみましょう。

「System Services」という言葉だけでは、それが何を含むのかがよく分かりませんでしたが、 実際に展開してみると項目名から技術の内容を推測することができます。 たとえば、「Memory Management」という項目であれば、メモリ系の関数に関する情報を参照できそうに思えます。 例として、これを展開してみましょう。

上記のような「About XXX」、「Using XXX」、「XXX Reference」という形式は、 他の項目を選択した場合にも表示されるので概要を押さえてく必要があります。 「About XXX」というのは、XXXという技術がどのようなものかを説明する項目を含んでおり、 たとえばMemory Managementならば仮想メモリやヒープの仕組みについて説明しています。 一方、「Using XXX」ではXXX系の関数などを使用したコードを取り上げており、 「XXX Reference」ではXXX系のリファレンスを取り上げています。 例として、「Memory Management Reference」を展開します。

この時点までくれば、項目の内容もかなり推測しやすくなります。 ご察しの通り、「XXX Functions」はXXX系の関数の一覧を含んでおり、 「XXX Structures」はXXX系の構造体の一覧を含んでいます。 この他に「XXX Interfaces」という項目もよく見かけますが、 これはXXX系のCOMインターフェースの一覧を含んでいます。

ここからは、関数のリファレンスがどのように記述されているかを見ていきます。 次の図は、先の「Memory Management Functions」から「HeapAlloc」を選択した結果です。

「Syntax」以下には関数のプロトタイプが記述され、 「Parameters」以下には引数の説明が記述されます。 __inというような文字列はSAL 注釈と呼ばれ、これは引数の扱い方を補足するために存在しています。 __inが意味するのは、その引数に指定する変数が適切に初期化されていなければならないということであり、 たとえば上記のhHeapには有効なヒープハンドルを指定しなければなりません。 __inと対照的なのは__outであり、これは関数からデータを受け取ることを意味するため、 変数の中身を初期化しておく必要はありません。 続いて、「Requirements」を確認します。

「Requirements」には、関数を呼び出すために必要な条件が記述されています。 上図から分かるように、この関数を呼び出すためにはWindows 2000以降でなければならないのですが、 実際には2000と記述されていても95や98で使用できる関数も存在します。 これを確実に見極めたい場合は、その関数を日本語版のMSDNで確認すればよいでしょう。 日本語版のMSDNには、95から2000までに存在する関数のリファレンスが不完全ながらも掲載されています。 Headerにはその関数をインクルードしているヘッダーファイルが記述され、 上図ではWinbase.hとなっています。 しかし、これはWindows.hによってインクルードされているため、 Windows.hをインクルードしていればHeapAllocは呼び出せることになります。 Libraryにはこの関数の名前が含んだインポートライブラリの名前が記述されます。 その関数が開発環境に既定で追加されていないインポートライブラリを必要とするなら、 #pragmaディレクティブを使用するなどして明示的にリンクする必要があります。 DLLにはその関数をエクスポートしているDLLの名前が記述されます。 LoadLibraryを使用して動的に関数を呼び出すアプリケーションは、 このDLL名を必ず確認しておく必要があります。

調べたい関数の名前が分かっている場合は、その関数名を基に検索を行った方が効率がよいと言えます。 次の図のように、ページ上部に存在するコンボボックスへ関数名を入力します。

この状態で右側の検索ボタンを押せば、入力された文字列を基に検索が行われます。 次に検索結果の一部を示します。

上図ではHeapAllocが2つ表示されていますが、選択すべきなのは「Win32 & COM」という文字列が記述された1番目の方になります。 「Win32 & COM」に関する情報だけを検索したい場合は、「Refine by Topic:」から「Win32 & COM」を選択してください。


戻る