Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2226)

Unified Diff: base/process.h

Issue 624713003: Keep only base/extractor.[cc|h]. (Closed) Base URL: https://chromium.googlesource.com/external/omaha.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/proc_utils_unittest.cc ('k') | base/process.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/process.h
diff --git a/base/process.h b/base/process.h
deleted file mode 100644
index 1cde0c356d7d6e4120234721f0b79122415cac79..0000000000000000000000000000000000000000
--- a/base/process.h
+++ /dev/null
@@ -1,314 +0,0 @@
-// Copyright 2004-2009 Google Inc.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// ========================================================================
-//
-// Declares class Process to incapsulate win32
-// functions for creation and some manipulations of
-// processes.
-
-#ifndef OMAHA_BASE_PROCESS_H_
-#define OMAHA_BASE_PROCESS_H_
-
-#include <windows.h>
-#include <psapi.h>
-#include <atlstr.h>
-#include <vector>
-#include "base/basictypes.h"
-#include "omaha/base/constants.h"
-#include "omaha/base/scoped_any.h"
-
-namespace omaha {
-
-const int kMaxProcesses = 1024;
-const int kMaxProcessModules = 1024;
-
-// Exclude mask for finding processes.
-enum FindProcessesExcludeMask {
- EXCLUDE_NONE = 0,
- EXCLUDE_CURRENT_PROCESS = 0x1,
- EXCLUDE_PROCESS_OWNED_BY_CURRENT_USER = 0x2,
- EXCLUDE_PROCESS_OWNED_BY_SYSTEM = 0x4,
- INCLUDE_ONLY_PROCESS_OWNED_BY_USER = 0x08,
- EXCLUDE_PROCESS_COMMAND_LINE_CONTAINING_STRING = 0x10,
- INCLUDE_PROCESS_COMMAND_LINE_CONTAINING_STRING = 0x20,
- EXCLUDE_PARENT_PROCESS = 0x40,
-};
-
-// Process info used in finding descendent processes.
-struct ProcessInfo {
- uint32 process_id;
- uint32 parent_id;
-#if !SHIPPING
- CString exe_file;
-#endif
-};
-
-// Process class
-class Process {
- public:
- // Constructor
- // Init the process object with the executable name
- // and if known the window class name of the process.
- // If window_class_name is known it will be easy
- // to stop the process just by sending messages to
- // a window.
- // TODO(omaha3): window_class_name is not being used.
- Process(const TCHAR* name, const TCHAR* window_class_name);
-
- // Constructor.
- // Init the process object with the process id.
- explicit Process(uint32 process_id);
-
- // Destructor
- virtual ~Process();
-
- // Start the process with some command line params if any.
- // If a token is provided, it will be used to start
- // the process in the default desktop of the
- // token's session. The caller needs to be SYSTEM in
- // this case.
- virtual HRESULT Start(const TCHAR* command_line_parameters,
- HANDLE runas_token);
-
- // Restart the process with the old command line params.
- HRESULT Restart(HANDLE runas_token);
-
- // Set shutdown event using in signaling the process watch.
- void SetShutdownEvent(HANDLE shutdown_event);
-
- // Sets the specified priority class to the process.
- bool SetPriority(uint32 priority_class) const;
-
- // Check if the process is running.
- bool Running() const;
-
- // Create a job and assign the process to it.
- HANDLE AssignToJob();
-
- // Wait some time till the process finishes.
- bool WaitUntilDead(uint32 timeout_msec);
-
- // Wait some time till the process and all its descendent processes finish.
- bool WaitUntilAllDead(HANDLE job,
- uint32 timeout_msec,
- const TCHAR* path_to_exclude,
- uint32* exit_code);
-
- // Wait until process is dead or a windows message arrives. For use in a
- // message loop while waiting.
- HRESULT WaitUntilDeadOrInterrupt(uint32 msec);
- // Return values include CI_S_PROCESSWAIT_DEAD, CI_S_PROCESSWAIT_TIMEOUT,
- // CI_S_PROCESSWAIT_MESSAGE.
-
-#if !SHIPPING
- CString GetDebugInfo() const;
-#endif
-
- // Return the process ID.
- uint32 GetId() const;
-
- // Return a readable representation of the process's name.
- const TCHAR *GetName() const;
-
- // Get win32 handle to process.
- HANDLE GetHandle() const;
-
- // Get process exit code.
- bool GetExitCode(uint32* exit_code) const;
-
- // can we kill the process via terminating
- // some processes are not safe to terminate.
- virtual bool IsTerminationAllowed() const;
-
- // Second, more rude method to stop the process. window_class_name was
- // not given or CloseWithMessage didn't succeed.
- bool Terminate(uint32 wait_for_terminate_msec);
-
- // Gets the parent process id.
- HRESULT GetParentProcessId(uint32* parent_pid);
-
- // Try to get a descendant process. Return process id if found.
- uint32 GetDescendantProcess(HANDLE job,
- bool child_only,
- bool sole_descedent,
- const TCHAR* search_name,
- const TCHAR* path_to_exclude);
-
- // Dynamically links and calls ::IsProcessInJob() in kernel32.dll.
- static BOOL IsProcessInJob(HANDLE process_handle,
- HANDLE job_handle,
- PBOOL result);
-
- // Try to get all matching descendant processes.
- HRESULT GetAllDescendantProcesses(
- HANDLE job,
- bool child_only,
- const TCHAR* search_name,
- const TCHAR* path_to_exclude,
- std::vector<ProcessInfo>* descendant_proc_ids);
-
- // Finds the processes based on passed criteria.
- static HRESULT FindProcesses(uint32 exclude_mask,
- const TCHAR* search_name,
- bool search_main_executable_only,
- std::vector<uint32>* process_ids_found);
-
- // Find processes which loads the specified exe/dll. Uses the user_sid only
- // if the INCLUDE_ONLY_PROCESS_OWNED_BY_USER flag has been set.
- // The command_line is only used when
- // EXCLUDE_PROCESS_COMMAND_LINE_CONTAINING_STRING is set.
- static HRESULT FindProcesses(uint32 exclude_mask,
- const TCHAR* search_name,
- bool search_main_executable_only,
- const CString& user_sid,
- const std::vector<CString>& command_line,
- std::vector<uint32>* process_ids_found);
-
- // Find processes with the specified criteria running in specific session.
- static HRESULT FindProcessesInSession(DWORD session_id,
- uint32 exclude_mask,
- const TCHAR* search_name,
- bool search_main_executable_only,
- const CString& user_sid,
- const std::vector<CString>& cmd_lines,
- std::vector<uint32>* process_ids_found);
-
- // Is the process using the specified exe/dll.
- static bool IsProcessUsingExeOrDll(uint32 process_id,
- const TCHAR* search_name,
- bool search_main_executable_only);
-
- // Obtain the process ID from a hProcess HANDLE.
- static ULONG GetProcessIdFromHandle(HANDLE hProcess);
-
- // Get the fully qualified path of the executable file for a process.
- static HRESULT GetExecutablePath(uint32 process_id, CString *exe_path);
-
- // Get the command line of a process.
- static HRESULT GetCommandLine(uint32 process_id, CString* cmd_line);
-
- // Get the process owner.
- static HRESULT GetProcessOwner(uint32 pid, CString* owner_sid);
-
- // Creates an impersonation token for the user running process_id.
- // The caller is responsible for closing the returned handle.
- static HRESULT GetImpersonationToken(DWORD process_id, HANDLE* user_token);
-
- // Returns user token handles for the users currently running the named task.
- // maximum_users specifies the maximun number of handles to be retured.
- // The actual number filled is returned.
- static HRESULT GetUsersOfProcesses(const TCHAR* task_name,
- int maximum_users,
- scoped_handle users[],
- int* number_of_users);
-
- // Gets the on disk path from where the process image is loaded.
- static HRESULT GetImagePath(const CString& process_name,
- const CString& user_sid,
- CString* path);
-
- // Returns if the process is running under WOW64.
- static bool IsWow64(uint32 pid);
-
- public:
- // How many times the process can be restarted in case it crashes.
- virtual uint32 GetMaxNumberOfRestarts() const;
-
- // Maximum amount of memory process is allowed to use before it's killed.
- // Default of 0 means unlimited.
- virtual uint32 GetMaxMemory() const;
-
- // Have we exceeded the number of maximum restarting.
- bool AllowedToRestart() const;
-
- // In case of crash, how soon to restart.
- virtual uint32 GetRestartInterval() const;
-
- // The idea is the following. Each process has maximum number of restarts.
- // As soon as the process reaches that number of restarts in should no longer
- // be restarted unless the time window in which the process was crashing is
- // more than the value returned by this function. For example:
- // Process X returns 3 from the function GetMaxNumberOfRestarts.
- // The same process returns 30*1000*60 (30 minutes) from
- // GetTimeWindowForCrashes if process X crashed more than 3 times in 30
- // minutes it will not be restarted. if it took more than 30 minutes for
- // process X to crash more than 3 times - internal counters for number of
- // crashes will be reset and the process will be happily restarted.
- // Each derived process can override this function to return its own time
- // window for crashes.
- // Default implementation returns INFINITE which means that this is not time
- // based at all, if the process crashed more than the value returned by
- // GetMaxNumberOfRestarts it will not be restarted no matter how long it took.
- virtual uint32 GetTimeWindowForCrashes() const;
-
- // Sets the main window of all process instances to the foreground.
- static HRESULT MakeProcessWindowForeground(const CString& executable);
-
- private:
- mutable uint32 number_of_restarts_;
- CString command_line_;
- CString command_line_parameters_;
- CString window_class_name_;
- CString name_;
- scoped_process process_;
- uint32 process_id_;
- mutable uint32 time_of_start_;
- mutable uint32 exit_code_;
- HANDLE shutdown_event_;
-
- // Helper function to wait till the process and all its descendent processes
- // finish.
- bool InternalWaitUntilAllDead(HANDLE job,
- uint32 timeout_msec,
- const TCHAR* path_to_exclude,
- uint32* exit_code);
-
- // Check if the process is running with a specified path.
- static bool IsProcessRunningWithPath(uint32 process_id, const TCHAR* path);
-
- // Checks if the command line of the process has been specified as one to
- // ignore.
- static bool IsStringPresentInList(const CString& process_command_line,
- const std::vector<CString>& list);
-
-
- // Helper function to get long path name.
- static HRESULT GetLongPathName(const TCHAR* short_name, CString* long_name);
-
- // Helper for Process::IsProcessUsingExeOrDll(). Use GetProcessImageFileName
- // to get the filename, and match against search_name.
- static bool IsProcImageMatch(HANDLE proc_handle,
- const TCHAR* search_name,
- bool is_fully_qualified_name);
-
- // Dynamically links and calls ::GetProcessImageFileName() in psapi.dll.
- static DWORD GetProcessImageFileName(HANDLE proc_handle,
- LPTSTR image_file,
- DWORD file_size);
-
- // Helper for Process::IsProcessUsingExeOrDll().
- // Is there a match between the module and the specified exe/dll?
- static bool IsModuleMatchingExeOrDll(const TCHAR* module_name,
- const TCHAR* search_name,
- bool is_fully_qualified_name);
-
-#if !SHIPPING
- CString debug_info_;
-#endif
- DISALLOW_EVIL_CONSTRUCTORS(Process);
-};
-
-} // namespace omaha
-
-#endif // OMAHA_BASE_PROCESS_H_
« no previous file with comments | « base/proc_utils_unittest.cc ('k') | base/process.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698