HANDLE CreateJobObject( LPSSECURITY_ATTRIBUTE SecurityAttributes, LPCTSTR JobName);
この関数はNT5.0で使用可能。
JobNameに指定する名前は、同期オブジェクトと同じ名前空間を使用していることに注意。JobNameにはNULLを指定可能。その場合、名前無しジョブオブジェクトが作成される。
作成したジョブオブジェクトをクローズするには、CloseHandleを使用する。
引数の意味は以下の通り。
SecurityAttributes | 作成するジョブオブジェクトのセキュリティ属性。 |
JobName | 作成するジョブオブジェクトの名前。 |
戻り値は、作成またはオープンしたジョブオブジェクトのハンドルである。関数の実行に失敗した場合、NULLが返される。
void ExitAllNotePad() { HANDLE hJob; HANDLE hProcess[3]; int i; STARTUPINFO si; PROCESS_INFORMATION pi; si.cb = sizeof(si); si.lpReserved = NULL; si.lpDesktop = NULL; si.lpTitle = NULL; si.dwFlags = 0; si.cbReserved2 = 0; si.lpReserved2 = NULL; /* ジョブオブジェクトの作成 */ hJob = CreateJobObject(NULL, "Test Job Object"); /* メモ帳を三つ起動 */ for(i=0; i<3; i++) { CreateProcess(NOTEPAD_PATH, NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); hProcess[i] = pi.hProcess; } /* 起動したメモ帳をジョブオブジェクトに関連付ける */ for(i=0; i<3; i++) AssignProcessToJobObject(hJob, hProcess[i]); /* 十秒間待機 */ printf("10秒待機..."); Sleep(10000); /* 三つのメモ帳をすべて終了 */ TerminateJobObject(hJob, -1); /* ジョブオブジェクトの破棄 */ CloseHandle(hJob); }