Windowsは、Ctrl-Cに応答して、コンソールアプリケーションでSIGINTをサポートしています。これは、Windowsにリモートスレッドから実行中のスレッドを中断し(プロセスも!)、シグナルハンドラーを呼び出す機能があることを意味します。
これはNTネイティブAPIレベルでどのように機能しますか?このスレッド中断APIは、ユーザースペースの他の目的に使用できますか?
Windowsは、Ctrl-Cに応答して、コンソールアプリケーションでSIGINTをサポートしています。これは、Windowsにリモートスレッドから実行中のスレッドを中断し(プロセスも!)、シグナルハンドラーを呼び出す機能があることを意味します。
これはNTネイティブAPIレベルでどのように機能しますか?このスレッド中断APIは、ユーザースペースの他の目的に使用できますか?
http://msdn.microsoft.com/en-us/library/xdkz3x12(v=vs.71).aspxによると、SIGINTにより、割り込みを処理するための新しいスレッドが作成されます。
したがって、実行中のスレッドを実際に「中断」することはないようです。独自のスレッドを生成するだけで同じ効果を得ることができます。
ここにもっと解説があります:
いつでもターゲットスレッドを一時停止し、コンテキストを修正してプロシージャを実行してから再開できます。見苦しいですが、スレッドを中断してプロシージャを実行したい場合はうまくいきます。
コンソールと CTRL+C ハンドラーは Win32 コンストラクトであり、実際にはネイティブ API レベルには存在しません。