私は WINAPI ライブラリ (具体的には WSA - ソケット) を使用する ac プログラムを作成し、ソース コードをコンパイルする代わりに、アセンブリ ソースを発行するようにコンパイラに要求し、それが下位レベルでどのように機能するかを調べました。
以下の行に出くわしたとき、アセンブリに、WINAPI 関数の最初の引数への参照がないことに気付きました。WSAStartup の MAKEWORD 関数です。
ここで実際に何が起こっているのでしょうか? 私のアセンブリ コードには MAKEWORD への参照はありませんが、プッシュ 514 のヒントがあります。
; source code : if (WSAStartup(MAKEWORD(2,2),&wsa) != 0)
lea eax, DWORD PTR _wsa$[ebp] ;_wsa$ is second arg
push eax
push 514 ; 00000202H ???
call DWORD PTR __imp__WSAStartup@8
test eax, eax
je SHORT $LN4@main
注: WSAStartup 関数は、プロセスによる Winsock DLL の使用を開始します。
必要に応じてさらに情報を提供できます