Partager via


WS_SERVICE_MESSAGE_RECEIVE_CALLBACK fonction de rappel (webservices.h)

Appelé lorsqu’une WS_MESSAGE est reçue sur un point de terminaison configuré avec un WS_SERVICE_CONTRACT qui a défini defaultMessageHandlerCallback.

Le WS_MESSAGE entrant, le serviceProxy ainsi que d’autres paramètres sont mis à la disposition du rappel via WS_OPERATION_CONTEXT.

Syntaxe

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

Paramètres

[in] context

Contexte dans lequel ce rappel est appelé.

[in, optional] asyncContext

Spécifie si le rappel peut s’exécuter de manière asynchrone.

[in, optional] error

Spécifie l’emplacement où des informations d’erreur supplémentaires doivent être stockées en cas d’échec de la fonction.

Valeur retournée

Cette fonction de rappel ne retourne pas de valeur.

Remarques

Lorsqu’il est défini, le rappel interdit toute concurrence sur un canal basé sur une session. Si l’accès concurrentiel sur un canal basé sur une session est souhaitable, une application ne doit pas définir WS_SERVICE_MESSAGE_RECEIVE_CALLBACK sur le WS_SERVICE_CONTRACT.

Au moment de l’appel du rappel, le modèle de service a effectué WsReadMessageStart sur le WS_MESSAGE de réception. Il incombe à l’application implémentant WS_SERVICE_MESSAGE_RECEIVE_CALLBACK de traiter le corps et d’effectuer l’opération WsReadMessageEnd .

Si le rappel échoue, le canal sous-jacent est abandonné.

Voir aussi UnTypedServiceExample

Exemples

Définition d’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
};

Accès à la propriété 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);
    :
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête webservices.h