WinCPICSetBlockingHook
Die WinCPICSetBlockingHook-Funktion ermöglicht es einer CPI-C-Implementierung (Microsoft® Windows® Common Programming Interface for Communications), CPI-C-Funktionsaufrufe mithilfe einer neuen Funktion zu blockieren. Dieser legacy-Aufruf wurde von Microsoft® Windows® Version 3 verwendet. x-Anwendungen , um blockierende Anrufe zu tätigen, ohne den Rest des Systems zu blockieren. Standardmäßig wird im Microsoft Windows-Betriebssystem durch Blockieren von Anrufen der aufrufende Anwendungsthread angehalten, bis die Anforderung abgeschlossen ist.
Parameter
lpBlockFunc
Gibt die Prozedur instance Adresse der zu installierenden Blockierungsfunktion an.
Rückgabewerte
Der Rückgabewert verweist auf die Prozedur instance der zuvor installierten Blockierungsfunktion. Die Anwendung oder Bibliothek, die WinCPICSetBlockingHook aufruft , sollte diesen Rückgabewert speichern, damit er bei Bedarf wiederhergestellt werden kann. (Wenn die Schachtelung nicht wichtig ist, kann die Anwendung einfach den von WinCPICSetBlockingHook zurückgegebenen Wert verwerfen und schließlich WinCPICUnhookBlockingHook verwenden, um den Standardmechanismus wiederherzustellen.)
Hinweise
Eine Windows CPI-C-Implementierung verfügt über einen Standardmechanismus, mit dem blockierende CPI-C-Funktionen implementiert werden. Diese Funktion gibt der Anwendung die Möglichkeit, ihre eigene Funktion zur Blockierungszeit anstelle der Standardfunktion auszuführen.
Die Standardblockierfunktion entspricht:
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;
}
Die WinCPICSetBlockingHook-Funktion wird bereitgestellt, um Anwendungen zu unterstützen, die eine komplexere Nachrichtenverarbeitung erfordern, z. B. solche, die das MDI-Modell (Multiple Document Interface) verwenden, oder Anwendungen mit Menu Accelerators (TranslateAccelerator).
Blockierende Funktionen müssen FALSE als Antwort auf eine WM_QUIT Nachricht zurückgeben, damit Windows CPI-C die Steuerung an die Anwendung zurückgeben kann, um die Nachricht zu verarbeiten und ordnungsgemäß zu beenden. Andernfalls sollte die Funktion TRUE zurückgeben.