Win32 API 日本語リファレンス
ホーム › Networking.WindowsWebServices › WS_SERVICE_MESSAGE_RECEIVE_CALLBACK

WS_SERVICE_MESSAGE_RECEIVE_CALLBACK

コールバック

シグネチャ

HRESULT WS_SERVICE_MESSAGE_RECEIVE_CALLBACK(
    WS_OPERATION_CONTEXT* context,
    WS_ASYNC_CONTEXT* asyncContext,
    WS_ERROR* error
);

パラメーター

フィールド型説明
contextWS_OPERATION_CONTEXT*このコールバックが呼び出されるコンテキスト。
asyncContextWS_ASYNC_CONTEXT*コールバックを非同期に実行できるかどうかを指定します。
errorWS_ERROR*関数が失敗した場合に追加のエラー情報を格納する場所を指定します。

公式ドキュメント

defaultMessageHandlerCallback が設定された WS_SERVICE_CONTRACT で構成されたエンドポイントで WS_MESSAGE を受信したときに呼び出されます。

受信した WS_MESSAGE、serviceProxy およびその他のパラメーターは、WS_OPERATION_CONTEXT を通じてコールバックから利用できます。

戻り値

このコールバック関数は値を返しません。

解説(Remarks)

定義されている場合、このコールバックはセッションベースのチャネル上でのすべての同時実行を禁止します。セッションベースのチャネルで同時実行が必要な場合は、アプリケーションは WS_SERVICE_CONTRACT に WS_SERVICE_MESSAGE_RECEIVE_CALLBACK を定義しないでください。

コールバックが呼び出される時点で、サービスモデルは受信側の WS_MESSAGE に対して WsReadMessageStart を実行済みです。本体 (body) を処理し、WsReadMessageEnd 操作を実行するのは、WS_SERVICE_MESSAGE_RECEIVE_CALLBACK を実装するアプリケーションの責任です。

コールバックが失敗した場合、基になるチャネルは中止されます。

関連項目: UnTypedServiceExample

例

WS_SERVICE_MESSAGE_RECEIVE_CALLBACK の定義


// Method contract for the service
static WS_SERVICE_CONTRACT calculatorContract = 
{
    NULL, 
    NULL, 
    DefaultMessageHandlerCallback, // WS_SERVICE_MESSAGE_RECEIVE_CALLBACK
    NULL
};

受信した WS_MESSAGE のプロパティへのアクセス

HRESULT CALLBACK MessageRecieved(const WS_OPERATION_CONTEXT* context, const WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error)
{
    :
    hr = WsGetOperationContextProperty(context, WS_OPERATION_CONTEXT_PROPERTY_INPUT_MESSAGE, &requestMessage, sizeof(requestMessage), NULL, error);
    :
}
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)