OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/sys_info.h" | 5 #include "base/sys_info.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 12 matching lines...) Expand all Loading... | |
23 memory_info.dwLength = sizeof(memory_info); | 23 memory_info.dwLength = sizeof(memory_info); |
24 if (!GlobalMemoryStatusEx(&memory_info)) { | 24 if (!GlobalMemoryStatusEx(&memory_info)) { |
25 NOTREACHED(); | 25 NOTREACHED(); |
26 return 0; | 26 return 0; |
27 } | 27 } |
28 | 28 |
29 int64_t rv = static_cast<int64_t>(memory_info.*memory_field); | 29 int64_t rv = static_cast<int64_t>(memory_info.*memory_field); |
30 return rv < 0 ? std::numeric_limits<int64_t>::max() : rv; | 30 return rv < 0 ? std::numeric_limits<int64_t>::max() : rv; |
31 } | 31 } |
32 | 32 |
33 bool GetDiskSpaceInfo(const base::FilePath& path, | |
34 int64_t* available_bytes, | |
35 int64_t* total_bytes) { | |
36 ULARGE_INTEGER available, total, free; | |
Lei Zhang
2016/06/10 17:43:11
One variable per line here too, but don't worry ab
| |
37 if (!GetDiskFreeSpaceExW(path.value().c_str(), &available, &total, &free)) | |
38 return false; | |
39 | |
40 if (available_bytes) { | |
41 *available_bytes = static_cast<int64_t>(available.QuadPart); | |
42 if (*available_bytes < 0) | |
43 *available_bytes = std::numeric_limits<int64_t>::max(); | |
44 } | |
45 if (total_bytes) { | |
46 *total_bytes = static_cast<int64_t>(total.QuadPart); | |
47 if (*total_bytes < 0) | |
48 *total_bytes = std::numeric_limits<int64_t>::max(); | |
49 } | |
50 return true; | |
51 } | |
52 | |
33 } // namespace | 53 } // namespace |
34 | 54 |
35 namespace base { | 55 namespace base { |
36 | 56 |
37 // static | 57 // static |
38 int SysInfo::NumberOfProcessors() { | 58 int SysInfo::NumberOfProcessors() { |
39 return win::OSInfo::GetInstance()->processors(); | 59 return win::OSInfo::GetInstance()->processors(); |
40 } | 60 } |
41 | 61 |
42 // static | 62 // static |
43 int64_t SysInfo::AmountOfPhysicalMemory() { | 63 int64_t SysInfo::AmountOfPhysicalMemory() { |
44 return AmountOfMemory(&MEMORYSTATUSEX::ullTotalPhys); | 64 return AmountOfMemory(&MEMORYSTATUSEX::ullTotalPhys); |
45 } | 65 } |
46 | 66 |
47 // static | 67 // static |
48 int64_t SysInfo::AmountOfAvailablePhysicalMemory() { | 68 int64_t SysInfo::AmountOfAvailablePhysicalMemory() { |
49 return AmountOfMemory(&MEMORYSTATUSEX::ullAvailPhys); | 69 return AmountOfMemory(&MEMORYSTATUSEX::ullAvailPhys); |
50 } | 70 } |
51 | 71 |
52 // static | 72 // static |
53 int64_t SysInfo::AmountOfVirtualMemory() { | 73 int64_t SysInfo::AmountOfVirtualMemory() { |
54 return AmountOfMemory(&MEMORYSTATUSEX::ullTotalVirtual); | 74 return AmountOfMemory(&MEMORYSTATUSEX::ullTotalVirtual); |
55 } | 75 } |
56 | 76 |
57 // static | 77 // static |
58 int64_t SysInfo::AmountOfFreeDiskSpace(const FilePath& path) { | 78 int64_t SysInfo::AmountOfFreeDiskSpace(const FilePath& path) { |
59 ThreadRestrictions::AssertIOAllowed(); | 79 ThreadRestrictions::AssertIOAllowed(); |
60 | 80 |
61 ULARGE_INTEGER available, total, free; | 81 int64_t available; |
62 if (!GetDiskFreeSpaceExW(path.value().c_str(), &available, &total, &free)) | 82 if (!GetDiskSpaceInfo(path, &available, nullptr)) |
63 return -1; | 83 return -1; |
84 return available; | |
85 } | |
64 | 86 |
65 int64_t rv = static_cast<int64_t>(available.QuadPart); | 87 // static |
66 return rv < 0 ? std::numeric_limits<int64_t>::max() : rv; | 88 int64_t SysInfo::AmountOfTotalDiskSpace(const FilePath& path) { |
89 ThreadRestrictions::AssertIOAllowed(); | |
90 | |
91 int64_t total; | |
92 if (!GetDiskSpaceInfo(path, nullptr, &total)) | |
93 return -1; | |
94 return total; | |
67 } | 95 } |
68 | 96 |
69 std::string SysInfo::OperatingSystemName() { | 97 std::string SysInfo::OperatingSystemName() { |
70 return "Windows NT"; | 98 return "Windows NT"; |
71 } | 99 } |
72 | 100 |
73 // static | 101 // static |
74 std::string SysInfo::OperatingSystemVersion() { | 102 std::string SysInfo::OperatingSystemVersion() { |
75 win::OSInfo* os_info = win::OSInfo::GetInstance(); | 103 win::OSInfo* os_info = win::OSInfo::GetInstance(); |
76 win::OSInfo::VersionNumber version_number = os_info->version_number(); | 104 win::OSInfo::VersionNumber version_number = os_info->version_number(); |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
120 void SysInfo::OperatingSystemVersionNumbers(int32_t* major_version, | 148 void SysInfo::OperatingSystemVersionNumbers(int32_t* major_version, |
121 int32_t* minor_version, | 149 int32_t* minor_version, |
122 int32_t* bugfix_version) { | 150 int32_t* bugfix_version) { |
123 win::OSInfo* os_info = win::OSInfo::GetInstance(); | 151 win::OSInfo* os_info = win::OSInfo::GetInstance(); |
124 *major_version = os_info->version_number().major; | 152 *major_version = os_info->version_number().major; |
125 *minor_version = os_info->version_number().minor; | 153 *minor_version = os_info->version_number().minor; |
126 *bugfix_version = 0; | 154 *bugfix_version = 0; |
127 } | 155 } |
128 | 156 |
129 } // namespace base | 157 } // namespace base |
OLD | NEW |