WinAPPCCancelBlockingCall
La fonction WinAPPCCancelBlockingCall annule toute opération de blocage en suspens pour son thread. Tout appel bloqué en attente annulé entraîne la génération d’un code d’erreur WAPPCCANCEL.
Syntaxe
BOOL WINAPI WinAPPCCancelBlockingCall(
void
);
Valeur de retour
La valeur de retour spécifie si la demande d’annulation a réussi. Si la valeur est zéro, la demande a été annulée. Sinon, la valeur est la suivante :
WAPPCINVALID
Code d’erreur indiquant qu’aucun appel bloquant n’est en attente.
Remarques
Si le verbe en suspens est lié à une conversation (par exemple, SEND_DATA ou RECEIVE_AND_WAIT), le verbe est vidé et la session est fermée. Si le verbe est lié à un TP (par exemple, RECEIVE_ALLOCATE ou TP_STARTED), le TP est terminé. Dans les deux cas, bien que l’implémentation supprime les conversations et les sessions aussi proprement que possible, elle ne vide pas les mémoires tampons d’envoi, n’attend pas les confirmations, etc. Cet appel est synchrone et une fois le traitement décrit ci-dessus terminé, la fonction est terminée.
Dans Microsoft Windows, une application multithread peut avoir plusieurs opérations de blocage en attente, mais une seule par thread. Pour faire la distinction entre plusieurs appels en attente, WinAPPCCancelBlockingCall annule l’opération en attente sur le thread d’application actuel ou appelant s’il en existe un ; sinon, elle échoue. Par défaut, Windows APPC suspend le thread d’application appelant pendant qu’une opération est en attente. Par conséquent, le thread sur lequel l’opération de blocage a été lancée ne reprendra pas le contrôle (et ne pourra donc pas émettre un appel à WinAPPCCancelBlockingCall), sauf si un hook bloquant est inscrit pour le thread à l’aide de WinAPPCSetBlockingHook.