WinAPPCSetBlockingHook

WinAPPCSetBlockingHook 函式允許 Windows APPC 實作透過新函式阻擋 APPC 函式呼叫。 在 Microsoft Windows 中,預設情況下,阻擋呼叫會暫停呼叫應用程式的執行緒,直到請求完成。

語法

  
    FARPROC WINAPI WinAPPCSetBlockingHook (   
FARPROC lpBlockFunc);  

參數

lpBlockFunc
指定要安裝的阻塞函式的程序實例位址。

傳回值

回傳值指向先前安裝的阻塞函數的程序實例。 呼叫 WinAPPCSetBlockingHook 的應用程式或函式庫應該會儲存這個回傳值,以便在需要時還原。 (如果巢狀功能不重要,應用程式可以直接丟棄 WinAPPCSetBlockingHook 回傳的值,並最終使用 WinAPPCUnhookBlockingHook 來恢復預設機制。)

備註

Windows APPC 實作有預設機制來實作阻擋 APPC 功能。 此函式讓應用程式能在區塊時間執行自己的函式,取代預設函式。

預設的阻斷函數等價於:

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;  
}  

阻塞函式若收到 WM_QUIT 訊息,必須回傳 FALSE,讓 Windows APPC 能將控制權交還給應用程式處理訊息並優雅終止。 否則,函式應回傳 TRUE。

此函式是以每個執行緒為單位實作。 它允許特定執行緒取代阻塞機制,而不影響其他執行緒。

WinAPPCSetBlockingHook 函式是為了支援需要更複雜訊息處理的應用程式,例如採用多文件介面(MDI)模型的應用程式。

另請參閱

WinAPPCIsBlocking
WinAPPCCancelBlockingCall