Поделиться через


функция обратного вызова WS_SERVICE_MESSAGE_RECEIVE_CALLBACK (webservices.h)

Вызывается при получении WS_MESSAGE в конечной точке, настроенной с помощью WS_SERVICE_CONTRACT с заданным значением defaultMessageHandlerCallback.

Входящий 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_MESSAGE_RECEIVE_CALLBACK на WS_SERVICE_CONTRACT.

Во время вызова обратного вызова модель службы выполнила WsReadMessageStart на принимающем WS_MESSAGE. Приложение, реализующее 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
Header webservices.h