
No.2ベストアンサー
- 回答日時:
関数の呼び出し規約です。
原理上、関数を呼び出す時の引数の渡し方には幾つかの方法があり一長一短もあるのですが、
実際に使うに際しては、それらが一致していないと、不正動作をすることになります。
# VC等ではオプションでデフォルトを指定することもできますが、
# 大抵はstdcallを指定しないとcdeclという規約になります。
Windowsにおいては、Win32とのインタフェースは原則としてstdcallと呼ばれる呼び出し規約を使うと、
Microsoftが決めており、WINAPIと書いたらプログラマが直接意識しなくてもstdcallになるようにしています。
例えばCreateThread APIはstdcallなコールバック関数を要求するので、
そこに渡す関数にはWINAPIの指定が必要です。
(CALLBACKというマクロなども実装上は同様にstdcallになります)
No.1
- 回答日時:
WINAPIは
#define WINAPI __stdcall
と定義されています。
じゃあ、__stdcallが何かというと、
関数間の値の受け渡しをスタックとレジスタを使ってどう受け渡すかと言う規約の種類を表します。
この__stdcallは、マイクロソフトのスタンダートだと言う意味になります。
Wikiのstdcallを参照。
http://ja.wikipedia.org/wiki/%E5%91%BC%E5%87%BA% …
たぶん、アセンブラを理解してスタックフレームの構造を知らないと意味が分らないんじゃないかと思います。
ライブラリと呼び出すがの同じ種類のコンパイラ(VCやVBやPascal)でマイクロソフト社製とは限りませんので、こうした規約でデータの受け渡し方法を保障するわけです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.netでDLLを読み込んで実行す...
-
_CRTIMPの意味は?
-
逆ポーランド表記ってなんですか?
-
プログラムの規模を表す単位「k...
-
磁気ディスクの平均アクセス時...
-
VB6.0で #の意味
-
ubuntuで デイスク/deb/loopと...
-
AUTO-MDIX機能の無効化
-
「下士官に告ぐ」って公の発表...
-
ステップ数について
-
昔したタイピングソフトが思い...
-
個人が特定の人に対して自分の...
-
ページ置き換え LRU方式
-
ブロック長について
-
電気のインターロック回路でa接...
-
Native VLANの変更
-
TCPではなく、UDPが音声や動画...
-
c言語プログラミングのプログラ...
-
同じサブネットに属するIPアドレス
-
ライン数とステップ数の違いに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
最大スタックサイズを大きくす...
-
VB.netでDLLを読み込んで実行す...
-
逆ポーランド記法
-
printf / sprintf のスタック消...
-
cloneのスタック管理
-
VC++でプログラムから現在のス...
-
H8マイコン スタック領域に...
-
ヘッドセットとスカイプとBluet...
-
Visual C++ 2008 オーバーフロ...
-
スタック領域変更
-
gccでスタックサイズを変更する...
-
二分木について
-
WINDOWSなどのOSを構成している...
-
スタックを用いたプログラム
-
スタックモジュール
-
VC6でコンパイルでスタックの領...
-
pthreadのスタックサイズ設定取...
-
GCCで関数の引数が渡らない
-
基本情報技術者のデータ構造あ...
-
スタックとキューについて
おすすめ情報