コンソールのコントロール ハンドラー

各コンソール プロセスには、CTRL+CCtrl+BREAK、または Ctrl+CLOSE 信号を受信したときにシステムによって呼び出されるコントロール ハンドラー関数の独自のリストがあります。 初期状態では、各プロセスのコントロール ハンドラーのリストには、ExitProcess 関数を呼び出す既定のハンドラー関数だけが含まれています。 コンソール プロセスでは、HandlerRoutine 関数を呼び出すことによって、SetConsoleCtrlHandler 関数を追加または削除できます。 この関数は、他のプロセスのコントロール ハンドラーのリストには影響しません。 コンソール プロセスが何らかのコントロール信号を受信すると、そのハンドラー関数が、最後に登録されたものが最初に呼び出される順序で、いずれかのハンドラーが TRUE を返すまで呼び出されます。 どのハンドラーからも TRUE が返されない場合は、デフォルトのハンドラーが呼び出されます。

関数の dwCtrlType パラメーターは、受信したコントロール信号を識別し、戻り値は信号が処理されたかどうかを示します。

ハンドラー ルーチンを実行するために、コマンド ライン クライアント プロセス内で新しいスレッドが開始されます。 このスレッドのタイムアウト値とアクションの詳細については、HandlerRoutine 関数のドキュメントを参照してください。

コントロール ハンドラー関数の例については、「コントロール ハンドラー関数の登録」を参照してください。

AttachConsoleAllocConsole、または FreeConsole を呼び出すと、クライアント プロセスでコントロール ハンドラーのテーブルが初期状態にリセットされることにご注意ください。