WinCPICSetBlockingHook
La fonction WinCPICSetBlockingHook permet à une implémentation Microsoft® Windows® Common Programming Interface for Communications (CPI-C) de bloquer les appels de fonction CPI-C au moyen d’une nouvelle fonction. Cet appel hérité a été utilisé par Microsoft® Windows® version 3. x applications pour effectuer des appels bloquants sans bloquer le reste du système. Par défaut dans le système d’exploitation Microsoft Windows, le blocage des appels suspend le thread d’applications appelantes jusqu’à ce que la demande soit terminée.
Paramètres
lpBlockFunc
Spécifie la procédure instance’adresse de la fonction de blocage à installer.
Valeurs de retour
La valeur de retour pointe vers la procédure instance de la fonction de blocage précédemment installée. L’application ou la bibliothèque qui appelle WinCPICSetBlockingHook doit enregistrer cette valeur de retour afin qu’elle puisse être restaurée si nécessaire. (Si l’imbrication n’est pas importante, l’application peut simplement ignorer la valeur retournée par WinCPICSetBlockingHook et finalement utiliser WinCPICUnhookBlockingHook pour restaurer le mécanisme par défaut.)
Remarques
Une implémentation Windows CPI-C a un mécanisme par défaut par lequel les fonctions CPI-C bloquantes sont implémentées. Cette fonction donne à l’application la possibilité d’exécuter sa propre fonction au moment du blocage à la place de la fonction par défaut.
La fonction de blocage par défaut équivaut à :
BOOL DefaultBlockingHook (void) {
MSG msg;
/* get the next message if any */
if ( PeekMessage (&msg,0,0,PM_NOREMOVE) ) {
if ( msg.message = = WM_QUIT )
return FALSE; // let app process WM_QUIT
PeekMessage (&msg,0,0,PM_REMOVE) ;
TranslateMessage (&msg) ;
DispatchMessage (&msg) ;
}
/* TRUE if no WM_QUIT received */
return TRUE;
}
La fonction WinCPICSetBlockingHook est fournie pour prendre en charge les applications qui nécessitent un traitement de message plus complexe, par exemple celles qui utilisent le modèle MDI (Multiple Document Interface) ou les applications avec des accélérateurs de menu (TranslateAccelerator).
Les fonctions de blocage doivent retourner FALSE en réponse à un message WM_QUIT afin que Windows CPI-C puisse retourner le contrôle à l’application pour traiter le message et se terminer correctement. Sinon, la fonction doit retourner TRUE.