WS_SERVICE_MESSAGE_RECEIVE_CALLBACK回呼函式 (webservices.h)

在設定WS_SERVICE_CONTRACT且已設定 defaultMessageHandlerCallback 的端點上收到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。 實作 WS_SERVICE_MESSAGE_RECEIVE_CALLBACK 的應用程式負責處理本文和執行 WsReadMessageEnd 作業。

如果回呼失敗,基礎通道會中止。

另請參閱 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