Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit der WinAPPCSetBlockingHook-Funktion kann eine Windows APPC-Implementierung APPC-Funktionsaufrufe mithilfe einer neuen Funktion blockieren. Standardmäßig sperren Aufrufe in Microsoft Windows den Thread der aufrufenden Anwendung, bis die Anforderung abgeschlossen ist.
Syntax
FARPROC WINAPI WinAPPCSetBlockingHook (
FARPROC lpBlockFunc);
Parameter
lpBlockFunc
Gibt die Prozedurinstanzadresse der zu installierenden Blockierungsfunktion an.
Rückgabewert
Der Rückgabewert verweist auf die Prozedurinstanz der zuvor installierten Blockierungsfunktion. Die Anwendung oder Bibliothek, die WinAPPCSetBlockingHook 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 WinAPPCSetBlockingHook zurückgegebenen Wert verwerfen und schließlich WinAPPCUnhookBlockingHook verwenden, um den Standardmechanismus wiederherzustellen.)
Bemerkungen
Eine Windows APPC-Implementierung verfügt über einen Standardmechanismus, mit dem APPC-Funktionen blockiert werden. Diese Funktion bietet der Anwendung die Möglichkeit, ihre eigene Funktion zur Blockierungszeit anstelle der Standardfunktion auszuführen.
Die Standardblockierungsfunktion entspricht folgendem:
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;
}
Eine Blockierungsfunktion muss FALSE zurückgeben, wenn sie eine WM_QUIT Nachricht empfängt, damit Windows APPC die Steuerung an die Anwendung zurückgeben kann, um die Nachricht zu verarbeiten und ordnungsgemäß zu beenden. Andernfalls sollte die Funktion WAHR zurückgeben.
Diese Funktion wird pro Thread implementiert. Er stellt einen bestimmten Thread zum Ersetzen des Blockierungsmechanismus bereit, ohne dass sich dies auf andere Threads auswirkt.
Die WinAPPCSetBlockingHook-Funktion wird bereitgestellt, um anwendungen zu unterstützen, die komplexere Nachrichtenverarbeitung erfordern, z. B. diejenigen, die das MDI-Modell (Multiple Document Interface) verwenden.