Compartir a través de


WS_SERVICE_MESSAGE_RECEIVE_CALLBACK función de devolución de llamada (webservices.h)

Se invoca cuando se recibe un WS_MESSAGE en un punto de conexión configurado con un WS_SERVICE_CONTRACT que tiene establecido defaultMessageHandlerCallback.

El WS_MESSAGE entrante, serviceProxy junto con otros parámetros está disponible para la devolución de llamada a través de WS_OPERATION_CONTEXT.

Sintaxis

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

Contexto en el que se invoca esta devolución de llamada.

[in, optional] asyncContext

Especifica si la devolución de llamada se puede ejecutar de forma asincrónica.

[in, optional] error

Especifica dónde se debe almacenar información de error adicional si se produce un error en la función.

Valor devuelto

Esta función de devolución de llamada no devuelve un valor.

Comentarios

Cuando se define, la devolución de llamada no permitiría toda simultaneidad en un canal basado en sesión. Si la simultaneidad en un canal basado en sesión es deseable, una aplicación no debe definir WS_SERVICE_MESSAGE_RECEIVE_CALLBACK en el WS_SERVICE_CONTRACT.

En el momento de la invocación de la devolución de llamada, el modelo de servicio ha realizado WsReadMessageStart en el WS_MESSAGE receptor. Es responsabilidad de la aplicación que implementa WS_SERVICE_MESSAGE_RECEIVE_CALLBACK procesar el cuerpo y realizar la operación WsReadMessageEnd .

Si se produce un error en la devolución de llamada, se anula el canal subyacente.

Consulte también UnTypedServiceExample.

Ejemplos

Definición de un WS_SERVICE_MESSAGE_RECEIVE_CALLBACK


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

Acceso a la propiedad de WS_MESSAGE entrante

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 Value
Cliente mínimo compatible Windows 7 [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2008 R2 [aplicaciones de escritorio | Aplicaciones para UWP]
Plataforma de destino Windows
Encabezado webservices.h