[wing] Add wing_get_version_number method



commit a1a941f571872195955cc1a2906fe89811eda733
Author: Ignacio Casal Quinteiro <ignacio casal nice-software com>
Date:   Mon May 2 10:14:45 2016 -0700

    Add wing_get_version_number method
    
    This gets the Windows version

 wing/wingutils.c |   27 +++++++++++++++++++++++++++
 wing/wingutils.h |    4 ++++
 2 files changed, 31 insertions(+), 0 deletions(-)
---
diff --git a/wing/wingutils.c b/wing/wingutils.c
index 9d603bf..c5c405d 100644
--- a/wing/wingutils.c
+++ b/wing/wingutils.c
@@ -35,3 +35,30 @@ wing_is_wow_64 (void)
 
   return is_wow_64;
 }
+
+gboolean
+wing_get_version_number (gint *major,
+                         gint *minor)
+{
+  typedef NTSTATUS (WINAPI fRtlGetVersion) (PRTL_OSVERSIONINFOEXW);
+  OSVERSIONINFOEXW osverinfo;
+  fRtlGetVersion *RtlGetVersion;
+  HMODULE hmodule;
+
+  hmodule = LoadLibraryW (L"ntdll.dll");
+  g_return_val_if_fail (hmodule != NULL, FALSE);
+
+  RtlGetVersion = (fRtlGetVersion *)GetProcAddress (hmodule, "RtlGetVersion");
+  g_return_val_if_fail (RtlGetVersion != NULL, FALSE);
+
+  memset (&osverinfo, 0, sizeof (OSVERSIONINFOEXW));
+  osverinfo.dwOSVersionInfoSize = sizeof (OSVERSIONINFOEXW);
+  RtlGetVersion (&osverinfo);
+
+  FreeLibrary (hmodule);
+
+  *major = osverinfo.dwMajorVersion;
+  *minor = osverinfo.dwMinorVersion;
+
+  return TRUE;
+}
diff --git a/wing/wingutils.h b/wing/wingutils.h
index f3e2135..9caab94 100644
--- a/wing/wingutils.h
+++ b/wing/wingutils.h
@@ -26,6 +26,10 @@ G_BEGIN_DECLS
 WING_AVAILABLE_IN_ALL
 gboolean     wing_is_wow_64            (void);
 
+WING_AVAILABLE_IN_ALL
+gboolean     wing_get_version_number   (gint *major,
+                                        gint *minor);
+
 G_END_DECLS
 
 #endif /* WING_SERVICE_H */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]