WinCPICSetBlockingHook
La función WinCPICSetBlockingHook permite que una implementación de interfaz de programación común de Microsoft® Windows® para comunicaciones (CPI-C) bloquee las llamadas de función CPI-C mediante una nueva función. Esta llamada heredada la usó Microsoft® Windows® versión 3. x aplicaciones para realizar llamadas de bloqueo sin bloquear el resto del sistema. De forma predeterminada, en el sistema operativo Microsoft Windows, las llamadas de bloqueo suspenden el subproceso de aplicaciones que realiza la llamada hasta que finalice la solicitud.
Parámetros
lpBlockFunc
Especifica la dirección de instancia de procedimiento de la función de bloqueo que se va a instalar.
Valores devueltos
El valor devuelto apunta a la instancia de procedimiento de la función de bloqueo instalada anteriormente. La aplicación o biblioteca que llama a WinCPICSetBlockingHook debe guardar este valor devuelto para que se pueda restaurar si es necesario. (Si el anidamiento no es importante, la aplicación simplemente puede descartar el valor devuelto por WinCPICSetBlockingHook y, finalmente, usar WinCPICUnhookBlockingHook para restaurar el mecanismo predeterminado).
Comentarios
Una implementación de CPI-C de Windows tiene un mecanismo predeterminado mediante el cual se implementan las funciones CPI-C de bloqueo. Esta función proporciona a la aplicación la capacidad de ejecutar su propia función en tiempo de bloqueo en lugar de la función predeterminada.
La función de bloqueo predeterminada es equivalente a:
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 función WinCPICSetBlockingHook se proporciona para admitir aplicaciones que requieren un procesamiento de mensajes más complejo, por ejemplo, aquellos que emplean el modelo de interfaz de varios documentos (MDI) o aplicaciones con aceleradores de menús (TranslateAccelerator).
Las funciones de bloqueo deben devolver FALSE en respuesta a un mensaje de WM_QUIT para que Windows CPI-C pueda devolver el control a la aplicación para procesar el mensaje y finalizar correctamente. De lo contrario, la función debe devolver TRUE.