| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/process_util.h" | 5 #include "base/process_util.h" |
| 6 | 6 |
| 7 #include <fcntl.h> | 7 #include <fcntl.h> |
| 8 #include <io.h> | 8 #include <io.h> |
| 9 #include <windows.h> | 9 #include <windows.h> |
| 10 #include <userenv.h> | 10 #include <userenv.h> |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 355 } | 355 } |
| 356 return true; | 356 return true; |
| 357 } | 357 } |
| 358 | 358 |
| 359 bool LaunchProcess(const CommandLine& cmdline, | 359 bool LaunchProcess(const CommandLine& cmdline, |
| 360 const LaunchOptions& options, | 360 const LaunchOptions& options, |
| 361 ProcessHandle* process_handle) { | 361 ProcessHandle* process_handle) { |
| 362 return LaunchProcess(cmdline.GetCommandLineString(), options, process_handle); | 362 return LaunchProcess(cmdline.GetCommandLineString(), options, process_handle); |
| 363 } | 363 } |
| 364 | 364 |
| 365 bool SetJobObjectAsKillOnJobClose(HANDLE job_object) { |
| 366 JOBOBJECT_EXTENDED_LIMIT_INFORMATION limit_info = {0}; |
| 367 limit_info.BasicLimitInformation.LimitFlags = |
| 368 JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE; |
| 369 return 0 != SetInformationJobObject( |
| 370 job_object, |
| 371 JobObjectExtendedLimitInformation, |
| 372 &limit_info, |
| 373 sizeof(limit_info)); |
| 374 } |
| 375 |
| 365 // Attempts to kill the process identified by the given process | 376 // Attempts to kill the process identified by the given process |
| 366 // entry structure, giving it the specified exit code. | 377 // entry structure, giving it the specified exit code. |
| 367 // Returns true if this is successful, false otherwise. | 378 // Returns true if this is successful, false otherwise. |
| 368 bool KillProcessById(ProcessId process_id, int exit_code, bool wait) { | 379 bool KillProcessById(ProcessId process_id, int exit_code, bool wait) { |
| 369 HANDLE process = OpenProcess(PROCESS_TERMINATE | SYNCHRONIZE, | 380 HANDLE process = OpenProcess(PROCESS_TERMINATE | SYNCHRONIZE, |
| 370 FALSE, // Don't inherit handle | 381 FALSE, // Don't inherit handle |
| 371 process_id); | 382 process_id); |
| 372 if (!process) { | 383 if (!process) { |
| 373 DLOG(ERROR) << "Unable to open process " << process_id << " : " | 384 DLOG(ERROR) << "Unable to open process " << process_id << " : " |
| 374 << GetLastError(); | 385 << GetLastError(); |
| (...skipping 598 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 973 | 984 |
| 974 PERFORMANCE_INFORMATION info; | 985 PERFORMANCE_INFORMATION info; |
| 975 if (!InternalGetPerformanceInfo(&info, sizeof(info))) { | 986 if (!InternalGetPerformanceInfo(&info, sizeof(info))) { |
| 976 DLOG(ERROR) << "Failed to fetch internal performance info."; | 987 DLOG(ERROR) << "Failed to fetch internal performance info."; |
| 977 return 0; | 988 return 0; |
| 978 } | 989 } |
| 979 return (info.CommitTotal * system_info.dwPageSize) / 1024; | 990 return (info.CommitTotal * system_info.dwPageSize) / 1024; |
| 980 } | 991 } |
| 981 | 992 |
| 982 } // namespace base | 993 } // namespace base |
| OLD | NEW |