4.3.4 dc_rpc_call_to_s通信先を指定した遠隔サービスの要求

<この項の構成>
(1) 形式
(2) 機能
(3) UAPで値を設定する引数
(4) 値が返される引数
(5) リターン値
(6) 注意事項

(1) 形式

(a) TP1/Client/Wの場合
●_s付き関数

#include <dcvrpc.h>
DCLONG dc_rpc_call_to_s(
 DCCLT_ID cltid, struct DCRPC_BINDING_TBL *direction,
 char *group, char *service, char *in,
 DCULONG *in_len, char *out,
 DCULONG *out_len,
 DCLONG flags)

●_s無し関数

#include <dcvrpc.h>
DCLONG dc_rpc_call_to(
      struct DCRPC_BINDING_TBL *direction,
      char *group, char *service,
      char *in, DCULONG *in_len, char *out,
      DCULONG *out_len, DCLONG flags)

(b) TP1/Client/Pの場合
●_s付き関数

#include <dcvrpc.h>
DCLONG dc_rpc_call_to_s(
 DCCLT_ID cltid, struct DCRPC_BINDING_TBL CLTFAR *direction,
 char CLTFAR *group, char CLTFAR *service, char CLTFAR *in,
 DCULONG CLTFAR *in_len, char CLTFAR *out,
 DCULONG CLTFAR *out_len,
 DCLONG flags)

●_s無し関数

#include <dcvrpc.h>
DCLONG dc_rpc_call_to(
 struct DCRPC_BINDING_TBL CLTFAR *direction, char CLTFAR *group,
 char CLTFAR *service, char CLTFAR *in, DCULONG CLTFAR *in_len,
 char CLTFAR *out, DCULONG CLTFAR *out_len, DCLONG flags)

(2) 機能

dc_rpc_call_s関数と同様に,SPPのサービスを要求します。dc_rpc_call_to_s関数では,サービスグループ名とサービス名に加え,ホスト名を該当するサービス関数の検索のキーとして使用し,サービスの要求先を限定します。

この関数を発行する前にDCRPC_DIRECT_SCHEDULE()を発行し,DCRPC_BINDING_TBL構造体を作成しておく必要があります。引数directionにDCRPC_BINDING_TBL構造体へのアドレスを指定します。それ以外のインタフェースは,dc_rpc_call_s関数と同じです。

(3) UAPで値を設定する引数

(4) 値が返される引数

(5) リターン値

リターン値数値
(10進数)
意味
DC_OK0正常終了しました。
DCRPCER_INVALID_ARGS-2401引数に指定した値が誤っています。
DCRPCER_PROTO-2402dc_rpc_open_s関数が実行されていません。
または,常設コネクション確立中にこの関数を発行しています。
または,トランザクションの範囲内でこの関数を発行しています。
DCRPCER_NO_BUFS-2404必要なバッファが確保できませんでした。または,リソース不足が発生しました。
DCRPCER_NET_DOWN-2406ネットワーク障害が発生しました。
DCRPCER_TIMED_OUT-2407dc_rpc_call_to_s関数の処理で時間切れ(タイムアウト)が発生しました。または,サービス要求したSPPが処理完了前に異常終了しました。
DCRPCER_MESSAGE_TOO_BIG-2408入力パラメタ長が最大値を超えました。
DCRPCER_REPLY_TOO_BIG-2409返ってきた応答の長さが,CUPで用意した領域を超えています。
DCRPCER_NO_SUCH_SERVICE_GROUP-2410groupに指定したサービスグループ名は定義されていません。
または,ソケット受信型(ユーザサービス定義receive_from=socket指定)のユーザサーバへサービス要求を行いました。
または,クライアント環境定義DCCLTONLYTHISNODEの指定がNのとき,サービス要求先のSPPが未起動です。
DCRPCER_NO_SUCH_SERVICE-2411serviceに指定したサービス名は定義されていません。
DCRPCER_SERVICE_CLOSED-2412serviceに指定したサービスが存在するサービスグループは,閉塞されています。
DCRPCER_SERVICE_TERMINATING-2413指定したサービスは終了処理中です。
DCRPCER_SERVICE_NOT_UP-2414クライアント環境定義DCCLTONLYTHISNODEの指定がYのとき,サービス要求先のSPPが未起動です。
または,クライアント環境定義DCWATCHTIMの指定が0のとき,処理完了前に異常終了しました。
DCRPCER_OLTF_NOT_UP-2415指定したサービスが存在するノードのOpenTP1が実行されていません。
DCRPCER_SYSERR_AT_SERVER-2416指定したサービスでシステムエラーが発生しました。
DCRPCER_NO_BUFS_AT_SERVER-2417指定したサービスでメモリ不足が発生しました。
DCRPCER_SYSERR-2418システムエラーが発生しました。
DCRPCER_INVALID_REPLY-2419サービス関数がOpenTP1に返した応答長が,1からDCRPC_MAX_MESSAGE_SIZEまでの範囲にありません。
DCRPCER_OLTF_INITIALIZING-2420サービス要求されたノードにあるOpenTP1は,開始処理中です。
DCRPCER_TRNCHK-2427負荷を分散する先のノードにあるOpenTP1のバージョンが古いため,ノード間負荷バランス機能を実行できません。このリターン値は,ノード間負荷バランス機能を使用しているSPPにサービスを要求した場合にだけ戻ります。
DCRPCER_TESTMODE-2466ユーザサービス定義でtest_mode=noと指定したSPPに対してサービス要求しました。
DCRPCER_SECCHK-2470サービス要求先のSPPは,セキュリティ機能で保護されています。dc_rpc_call_to_s関数を呼び出したUAPには,サーバUAPへのアクセス権限がありません。
DCRPCER_SERVICE_TERMINATED-2478サービス要求先のSPPが処理完了前に異常終了しました。この値はクライアント環境定義DCEXTENDFUNCTIONに00000001を指定した場合に戻ります。00000000を指定しているか指定を省略していると,リターン値にはDCRPCER_TIMED_OUT,またはDCRPCER_SERVICE_NOT_UPが戻ります。
DCCLTER_INVALID_CLTID-2544cltidに指定したクライアントIDは,dc_clt_cltin_s関数で受け取ったクライアントIDと異なっています。
DCRPCER_PORT_IN_USE-2547指定したポート番号は使用されています。または,OSが自動的に割り当てるポート番号が不足しています。
注※
クライアント環境定義DCCLTRPCMAXMSGSIZEに2以上を指定した場合,DCRPC_MAX_MESSAGE_SIZEの値(1メガバイト)ではなく,クライアント環境定義DCCLTRPCMAXMSGSIZEに指定した値になります。

(6) 注意事項