コンソールのコントロール ハンドラー
各コンソール プロセスには、CTRL+C、Ctrl+BREAK、または Ctrl+CLOSE 信号を受信したときにシステムによって呼び出されるコントロール ハンドラー関数の独自のリストがあります。 初期状態では、各プロセスのコントロール ハンドラーのリストには、ExitProcess 関数を呼び出す既定のハンドラー関数だけが含まれています。 コンソール プロセスでは、HandlerRoutine 関数を呼び出すことによって、SetConsoleCtrlHandler 関数を追加または削除できます。 この関数は、他のプロセスのコントロール ハンドラーのリストには影響しません。 コンソール プロセスが何らかのコントロール信号を受信すると、そのハンドラー関数が、最後に登録されたものが最初に呼び出される順序で、いずれかのハンドラーが TRUE を返すまで呼び出されます。 どのハンドラーからも TRUE が返されない場合は、デフォルトのハンドラーが呼び出されます。
関数の dwCtrlType パラメーターは、受信したコントロール信号を識別し、戻り値は信号が処理されたかどうかを示します。
ハンドラー ルーチンを実行するために、コマンド ライン クライアント プロセス内で新しいスレッドが開始されます。 このスレッドのタイムアウト値とアクションの詳細については、HandlerRoutine 関数のドキュメントを参照してください。
コントロール ハンドラー関数の例については、「コントロール ハンドラー関数の登録」を参照してください。
AttachConsole、AllocConsole、または FreeConsole を呼び出すと、クライアント プロセスでコントロール ハンドラーのテーブルが初期状態にリセットされることにご注意ください。