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 |