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;
}
Windows APPC がアプリケーションに制御を返してメッセージを処理し、正常に終了できるように、ブロック関数は、WM_QUIT メッセージを受信した場合に FALSE を返す必要があります。 それ以外の場合、関数は TRUE を返す必要があります。
この関数は、スレッドごとに実装されます。 特定のスレッドが、他のスレッドに影響を与えずにブロッキング メカニズムを置き換えることを提供します。
WinAPPCSetBlockingHook 関数は、より複雑なメッセージ処理を必要とするアプリケーション (マルチ ドキュメント インターフェイス (MDI) モデルを使用するアプリケーションなど) をサポートするために提供されます。