Windows APIのSetConsoleCtrlHandler()で登録したハンドラ関数が呼び出される際、メインスレッドとは別のスレッドが新たに生成されて実行されます。以下、確認用のコード。
ConsoleCtrlTest.c
#include <stdio.h>
#include <windows.h>
BOOL WINAPI HandlerRoutine(__in DWORD dwCtrlType);
int main(int argc, CHAR *argv[])
{
SetConsoleCtrlHandler(HandlerRoutine, TRUE);
printf("main : %d\n", GetCurrentThreadId());
for(;;);
return 0;
}
BOOL WINAPI HandlerRoutine(DWORD dwCtrlType)
{
printf("HanlerRoutine : %d\n", GetCurrentThreadId());
return FALSE;
}
#参考文献