Compartilhar via


função de retorno de chamada WS_SERVICE_MESSAGE_RECEIVE_CALLBACK (webservices.h)

Invocado quando um WS_MESSAGE é recebido em um ponto de extremidade configurado com um WS_SERVICE_CONTRACT que tem defaultMessageHandlerCallback definido.

O WS_MESSAGE de entrada, o serviceProxy junto com outros parâmetros é disponibilizado para o retorno de chamada por meio de WS_OPERATION_CONTEXT.

Sintaxe

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
)
{...}

Parâmetros

[in] context

O contexto no qual esse retorno de chamada está sendo invocado.

[in, optional] asyncContext

Especifica se o retorno de chamada pode ser executado de forma assíncrona.

[in, optional] error

Especifica onde informações adicionais de erro devem ser armazenadas se a função falhar.

Retornar valor

Essa função de retorno de chamada não retorna um valor.

Comentários

Quando definido, o retorno de chamada não permite toda a simultaneidade em um canal baseado em sessão. Se a simultaneidade em um canal baseado em sessão for desejável, um aplicativo não deverá definir WS_SERVICE_MESSAGE_RECEIVE_CALLBACK no WS_SERVICE_CONTRACT.

No momento da invocação do retorno de chamada, o modelo de serviço executou WsReadMessageStart no WS_MESSAGE de recebimento. É responsabilidade do aplicativo implementar WS_SERVICE_MESSAGE_RECEIVE_CALLBACK processar o corpo e executar a operação WsReadMessageEnd .

Se o retorno de chamada falhar, o canal subjacente será anulado.

Confira também UnTypedServiceExample

Exemplos

Definindo um WS_SERVICE_MESSAGE_RECEIVE_CALLBACK


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

Acessando a propriedade WS_MESSAGE de entrada

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);
    :
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7 [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows Server 2008 R2 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho webservices.h