Index: base/system.h |
diff --git a/base/system.h b/base/system.h |
deleted file mode 100644 |
index 9285b6c8aca76a427e9f69b764bf3d3d0a3bf390..0000000000000000000000000000000000000000 |
--- a/base/system.h |
+++ /dev/null |
@@ -1,231 +0,0 @@ |
-// Copyright 2004-2010 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. |
-// ======================================================================== |
-// |
-// system functions for checking disk space / memory usage / etc. |
- |
-#ifndef OMAHA_BASE_SYSTEM_H_ |
-#define OMAHA_BASE_SYSTEM_H_ |
- |
-#include <atlstr.h> |
-#include <base/basictypes.h> |
- |
-namespace omaha { |
- |
-#define kMaxRegistryBackupWaitMs 3000 |
-#define kMaxRegistryRestoreWaitMs 30000 |
- |
-// amount of time the user must have no input before we declare them idle |
-// used by outlook addin, outlook_cap, and filecap. |
-#define kUserIdleThresholdMs 30000 |
- |
-// The user is busy typing or interacting with another application |
-// if the user is below the minimum threshold. |
-#define kUserIdleMinThresholdMs 30000 |
- |
-// The user is probably not paying attention |
-// if the user is above the maximum threshold. |
-#define kUserIdleMaxThresholdMs 600000 |
- |
-const DWORD kInvalidSessionId = 0xFFFFFFFF; |
- |
-class System { |
- public: |
- |
- // disk activity. |
- |
- // waits up to specified time for disk activity to occur; sleeps in |
- // increments of sleep_time. |
- static HRESULT WaitForDiskActivity(uint32 max_delay_milliseconds, |
- uint32 sleep_time_ms, |
- uint32 *time_waited); |
- // disk activity counters; may require admin on some machines? should return |
- // E_FAIL if so. |
- static HRESULT GetDiskActivityCounters(uint64 *reads, |
- uint64 *writes, |
- uint64 *bytes_read, |
- uint64 *bytes_written); |
- |
- // disk statistics. |
- |
- // disk total and free space. |
- // Path is either the root of a drive or an existing folder on a drive; the |
- // statistics are for that drive. |
- static HRESULT GetDiskStatistics(const TCHAR* path, |
- uint64 *free_bytes_current_user, |
- uint64 *total_bytes_current_user, |
- uint64 *free_bytes_all_users); |
- |
- enum Priority { |
- LOW, |
- HIGH, |
- NORMAL, |
- IDLE |
- }; |
- |
- // functions to alter process/thread priority. |
- static HRESULT SetThreadPriority(enum Priority priority); |
- static HRESULT SetProcessPriority(enum Priority priority); |
- |
- // The three functions below start background processes via ::CreateProcess. |
- // Use the ShellExecuteProcessXXX functions when starting foreground |
- // processes. |
- static HRESULT StartProcessWithArgs(const TCHAR *process_name, |
- const TCHAR *cmd_line_arguments); |
- static HRESULT StartProcessWithArgsAndInfo(const TCHAR *process_name, |
- const TCHAR *cmd_line_arguments, |
- PROCESS_INFORMATION *pi); |
- static HRESULT StartCommandLine(const TCHAR* command_line_to_execute); |
- static HRESULT StartProcess(const TCHAR *process_name, |
- TCHAR *command_line, |
- PROCESS_INFORMATION *pi); |
- |
- // Start the process with the provided token, in the specified desktop of |
- // the token's session. The caller needs to be SYSTEM. |
- static HRESULT StartProcessAsUser(HANDLE user_token, |
- const CString& executable_path, |
- const CString& parameters, |
- LPWSTR desktop, |
- PROCESS_INFORMATION* pi); |
- |
- // start another process painlessly via ::ShellExecuteEx. Use this method |
- // instead of the StartProcessXXX methods that use ::CreateProcess where |
- // possible, since ::ShellExecuteEx has better behavior on Vista. |
- static HRESULT ShellExecuteProcess(const TCHAR* file_name_to_execute, |
- const TCHAR* command_line_parameters, |
- HWND hwnd, |
- HANDLE* process_handle); |
- |
- // start another process painlessly via ::ShellExecuteEx. Use this method |
- // instead of the StartProcessXXX methods that use ::CreateProcess where |
- // possible, since ::ShellExecuteEx has better behavior on Vista. |
- static HRESULT ShellExecuteCommandLine(const TCHAR* command_line_to_execute, |
- HWND hwnd, |
- HANDLE* process_handle); |
- |
- // memory statistics. |
- |
- // max amount of memory that can be allocated without paging. |
- static HRESULT MaxPhysicalMemoryAvailable(uint64 *max_bytes); |
- |
- // global memory stats |
- static HRESULT GetGlobalMemoryStatistics( |
- uint32 *memory_load_percentage, |
- uint64 *free_physical_memory, |
- uint64 *total_physical_memory, |
- uint64 *free_paged_memory, |
- uint64 *total_paged_memory, |
- uint64 *process_free_virtual_memory, |
- uint64 *process_total_virtual_memory); |
- |
- // process memory stats |
- static HRESULT GetProcessMemoryStatistics(uint64 *current_working_set, |
- uint64 *peak_working_set, |
- uint64 *min_working_set_size, |
- uint64 *max_working_set_size); |
- |
- // TODO(omaha): determine if using this where we do with machines |
- // with slow disks causes noticeable slowdown |
- |
- // reduce process working set - beware of possible negative performance |
- // implications - this function frees (to the page cache) all used pages, |
- // minimizing the working set - but could lead to additional page faults |
- // when the process continues. If the process continues soon enough the |
- // pages will still be in the page cache so they'll be relatively cheap |
- // soft page faults. This function is best used to reduce memory footprint |
- // when a component is about to go idle for "awhile". |
- static void FreeProcessWorkingSet(); |
- |
- // returns the number of ms the system has had no user input. |
- static int GetUserIdleTime(); |
- |
- // from ntddk.h, used as a parameter to get the process handle count. |
- static const int kProcessHandleCount = 20; |
- static uint32 GetProcessHandleCount(); |
- static uint32 GetProcessHandleCountOld(); |
- |
- static void GetGuiObjectCount(uint32 *gdi, uint32 *user); |
- |
- static bool IsUserIdle(); |
- static bool IsUserBusy(); |
- static bool IsScreensaverRunning(); |
- static bool IsWorkstationLocked(); |
- static bool IsUserAway(); |
- |
- // Is the system requiring reboot. |
- static bool IsRebooted(const TCHAR* base_file); |
- |
- // Mark the system as reboot required. |
- static HRESULT MarkAsRebootRequired(const TCHAR* base_file); |
- |
- // Unmark the system as reboot required. |
- static HRESULT UnmarkAsRebootRequired(const TCHAR* base_file); |
- |
- // Restart the computer. |
- static HRESULT RestartComputer(); |
- |
- // Get the full path name of the screen saver program currently selected. |
- // If no screen saver is selected then "fileName" is empty. |
- static HRESULT GetCurrentScreenSaver(CString* fileName); |
- |
- // Create an instance of a COM Local Server class using either plain vanilla |
- // CoCreateInstance, or using the Elevation moniker if Vista or later and |
- // the user is not an elevated admin. |
- static HRESULT CoCreateInstanceAsAdmin(HWND hwnd, |
- REFCLSID rclsid, |
- REFIID riid, |
- void** ppv); |
- |
- // Attempts to adjust current process privileges. |
- // Only process running with administrator privileges will succeed. |
- static HRESULT AdjustPrivilege(const TCHAR* privilege, bool enable); |
- |
- // Checks if the given privilege is enabled for the current process. |
- static HRESULT IsPrivilegeEnabled(const TCHAR* privilege, bool* present); |
- |
- // Dynamically links and calls ::WTSGetActiveConsoleSessionId(). Returns |
- // kInvalidSessionId if it cannot find the export in kernel32.dll. |
- static DWORD WTSGetActiveConsoleSessionId(); |
- |
- // Get the session the current process is running under. |
- static DWORD GetCurrentSessionId(); |
- |
- // Get the best guess as to the currently active session, |
- // or kInvalidSessionId if there is no active session. |
- static DWORD GetActiveSessionId(); |
- |
- // Is there a user logged on and active in the specified session? |
- static bool IsSessionActive(DWORD session_id); |
- |
- // Is the current process running under WinSta0. |
- static bool IsCurrentProcessInteractive(); |
- |
- // is the current process running under WinSta0 for the currently active |
- // session. |
- static bool IsCurrentProcessActiveAndInteractive(); |
- |
- // Returns true if a system battery is detected and the AC line |
- // status is 'offline', otherwise it returns false. |
- static bool IsRunningOnBatteries(); |
- |
- private: |
- static HRESULT GetRebootCheckDummyFileName(const TCHAR* base_file, |
- CString* dummy_file); |
- DISALLOW_EVIL_CONSTRUCTORS(System); |
-}; |
- |
-} // namespace omaha |
- |
-#endif // OMAHA_BASE_SYSTEM_H_ |
- |