summaryrefslogtreecommitdiffstats
path: root/base/win_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'base/win_util.cc')
-rw-r--r--base/win_util.cc18
1 files changed, 18 insertions, 0 deletions
diff --git a/base/win_util.cc b/base/win_util.cc
index d8f8b4e..6f193cc 100644
--- a/base/win_util.cc
+++ b/base/win_util.cc
@@ -60,6 +60,24 @@ WinVersion GetWinVersion() {
return win_version;
}
+void GetServicePackLevel(int* major, int* minor) {
+ DCHECK(major && minor);
+ static bool checked_version = false;
+ static int service_pack_major = -1;
+ static int service_pack_minor = -1;
+ if (!checked_version) {
+ OSVERSIONINFOEX version_info = {0};
+ version_info.dwOSVersionInfoSize = sizeof(version_info);
+ GetVersionEx(reinterpret_cast<LPOSVERSIONINFOW>(&version_info));
+ service_pack_major = version_info.wServicePackMajor;
+ service_pack_minor = version_info.wServicePackMinor;
+ checked_version = true;
+ }
+
+ *major = service_pack_major;
+ *minor = service_pack_minor;
+}
+
bool AddAccessToKernelObject(HANDLE handle, WELL_KNOWN_SID_TYPE known_sid,
ACCESS_MASK access) {
PSECURITY_DESCRIPTOR descriptor = NULL;