WSAPIは、Windows APIと同様に、アセンブリ言語はもとより、C言語、Pascalなどの高級言語プログラムからあたかもその高級言語の関数のように使用できるよう設計されています。
第2部のWSAPIの呼び出し構文はC言語の形式で記述しています。
以下の例は、C言語プログラムからWSMGR OPENを呼び出す方法を示しています。C言語プログラムからWSAPIを呼び出す場合、エントリ関数のプロトタイプ宣言、構造体定義、定数名定義はWSMGRが提供するxwsilb32.hファイルと、このファイルがインクルードしているxwsiai32.hファイルで定義されています。
ただし、呼び出し形式で使用する以下の定義については上記のヘッダファイルでは定義されていません。これらの定義はMicrosoft® Visual C++®のヘッダファイルに定義されています。これらのヘッダファイルを使用しない場合は、xwsiun32.hで定義してありますのでご利用ください。
(1) xwsiun32.hで定義されているもの
typedef unsigned short USHORT; (2バイト) typedef unsigned char UCHAR; (1バイト) typedef unsigned int UINT; (4バイト) typedef unsigned long ULONG; (4バイト) typedef UCHAR *PUCHAR; typedef void VOID;
(2) C言語プログラムより呼び出す例
#include <windows.h> #include "xwsilb32.h" UINT ret; USHORT ReqHandle; /* リクエストハンドル */ UINT ws _error; /* 処理結果 */ ret=XWSI_OPEN( (USHORT *)&ReqHandle, (UINT *)&ws _error);
C言語の形式の呼び出しでは、Windows APIの呼び出しと同様に、呼び出し規則を指定する__STDCALLキーワードを使用しています。また、WSAPIはダイナミックリンクライブラリでサポートしています。このため、WSAPIの呼び出しは以下の規則に従っています。
パラメータは、左から右の順番でスタックにプッシュされます。
関数名の頭にアンダースコアが付いています。
呼び出しの復帰時には、呼び出された関数の中でスタックからパラメータを取り除きます。
注意
wxsilb32.hを使用しない場合や、C/C++以外の言語を使用する場合での各インタフェースの呼出しパラメータで渡す構造体は、メンバの間に余分なパディングコードが入らないように1byte境界にバックしてください。