ページの先頭行へ戻る
WSMGR ソフトウェア開発キット V9 使用手引書

3.2 WSAPIの呼び出し方法

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の呼び出しは以下の規則に従っています。

  1. パラメータは、左から右の順番でスタックにプッシュされます。

  2. 関数名の頭にアンダースコアが付いています。

  3. 呼び出しの復帰時には、呼び出された関数の中でスタックからパラメータを取り除きます。

注意

wxsilb32.hを使用しない場合や、C/C++以外の言語を使用する場合での各インタフェースの呼出しパラメータで渡す構造体は、メンバの間に余分なパディングコードが入らないように1byte境界にバックしてください。