この特集のトップページへ
Chapter 2:COMアーキテクチャの概要

  COLUMN   __stdcall

 WindowsのアプリケーションやDLLを構築する際に,__stdcallやPascalなどが指定される関数を見かけることがある。この2つは同義であり,__stdcallという指定のある関数はPascal規約に従うことを意味する。Win32 APIでは勿論のこと,Visual Basicでもこの規約が既定となっている。この標準呼び出し規約では,関数の呼び出し元が関数に渡す引数のスタックフレームをクリアする。逆に,呼び出された関数側で引数のスタックフレームをクリアするプログラミング言語もあり,その代表例はCである。Cでは__cdeclと指定され,呼び出された関数側で引数のスタックフレームをクリアする。

 勿論,COMオブジェクトでは__stdcallが指定されている。また,__stdcallという指定ではなく,STDMETHODCALLTYPEというマクロを利用することもできる。ただし,STDMETHODCALLTYPEマクロを用いるときには,objbase.hファイルをインクルードしなければならないので,注意してほしい。

prev Chapter 1 6/8 next