次の方法で共有


コールバック関数WS_SERVICE_MESSAGE_RECEIVE_CALLBACK (webservices.h)

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

受信 WS_MESSAGE serviceProxy と他のパラメーターは、 WS_OPERATION_CONTEXTを介してコールバックで使用できるようになります。

構文

WS_SERVICE_MESSAGE_RECEIVE_CALLBACK WsServiceMessageReceiveCallback;

HRESULT WsServiceMessageReceiveCallback(
  [in]           const WS_OPERATION_CONTEXT *context,
  [in, optional] const WS_ASYNC_CONTEXT *asyncContext,
  [in, optional] WS_ERROR *error
)
{...}

パラメーター

[in] context

このコールバックが呼び出される コンテキスト

[in, optional] asyncContext

コールバックを非同期的に実行できるかどうかを指定します。

[in, optional] error

関数が失敗した場合に追加のエラー情報を格納する場所を指定します。

戻り値

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

注釈

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

コールバックの呼び出し時に、サービス モデルは受信WS_MESSAGE対して WsReadMessageStart を実行しました。 本文を処理して 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);
    :
}

要件

要件
サポートされている最小のクライアント Windows 7 [デスクトップ アプリ |UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリ |UWP アプリ]
対象プラットフォーム Windows
ヘッダー webservices.h