ホーム › 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
);パラメーター
| フィールド | 型 | 説明 |
|---|---|---|
| context | WS_OPERATION_CONTEXT* | このコールバックが呼び出されるコンテキスト。 |
| asyncContext | WS_ASYNC_CONTEXT* | コールバックを非同期に実行できるかどうかを指定します。 |
| error | WS_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)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)