WinAPPCSetBlockingHook
La función WinAPPCSetBlockingHook permite que una implementación de APPC de Windows bloquee las llamadas a funciones APPC mediante una función nueva. De forma predeterminada en Microsoft Windows, el bloqueo de llamadas suspende el subproceso de la aplicación que realiza la llamada hasta que finalice la solicitud.
Sintaxis
FARPROC WINAPI WinAPPCSetBlockingHook (
FARPROC lpBlockFunc);
Parámetros
lpBlockFunc
Especifica la dirección de instancia de procedimiento de la función de bloqueo que se va a instalar.
Valor devuelto
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 WinAPPCSetBlockingHook 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 WinAPPCSetBlockingHook y, finalmente, usar WinAPPCUnhookBlockingHook para restaurar el mecanismo predeterminado).
Comentarios
Una implementación de APPC de Windows tiene un mecanismo predeterminado mediante el cual se implementan las funciones appC 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;
}
Una función de bloqueo debe devolver FALSE si recibe un mensaje de WM_QUIT para que Windows APPC pueda devolver el control a la aplicación para procesar el mensaje y finalizar correctamente. De lo contrario, la función debe devolver TRUE.
Esta función se implementa por subproceso. Proporciona un subproceso determinado para reemplazar el mecanismo de bloqueo sin afectar a otros subprocesos.
La función WinAPPCSetBlockingHook se proporciona para admitir aquellas aplicaciones que requieren un procesamiento de mensajes más complejo, por ejemplo, aquellos que emplean el modelo de interfaz de varios documentos (MDI).