From c9f36df332f11827645ac97c97f04009d744eb1a Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 19 Nov 2013 22:21:11 +0000 Subject: * ntdll.h (RtlGetVersion): Declare. * wincap.cc (wincapc::init): Rather than GetVersionEx, call RtlGetVersion which is not crippled by missing Windows 8.1 manifest. * wincap.h (wincapc): Change type of version to RTL_OSVERSIONINFOEXW. Align formatting of all class members. --- winsup/cygwin/ChangeLog | 8 ++++++++ winsup/cygwin/ntdll.h | 1 + winsup/cygwin/release/1.7.26 | 4 ++++ winsup/cygwin/wincap.cc | 4 ++-- winsup/cygwin/wincap.h | 10 +++++----- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 8fa9089a3..be4656050 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,11 @@ +2013-11-19 Corinna Vinschen + + * ntdll.h (RtlGetVersion): Declare. + * wincap.cc (wincapc::init): Rather than GetVersionEx, call + RtlGetVersion which is not crippled by missing Windows 8.1 manifest. + * wincap.h (wincapc): Change type of version to RTL_OSVERSIONINFOEXW. + Align formatting of all class members. + 2013-11-19 Corinna Vinschen * wincap.cc (wincapc::init): Revert previous change. It's not working. diff --git a/winsup/cygwin/ntdll.h b/winsup/cygwin/ntdll.h index 9c8e94b08..89752cb46 100644 --- a/winsup/cygwin/ntdll.h +++ b/winsup/cygwin/ntdll.h @@ -1390,6 +1390,7 @@ extern "C" PBOOLEAN); NTSTATUS NTAPI RtlGetOwnerSecurityDescriptor (PSECURITY_DESCRIPTOR, PSID *, PBOOLEAN); + NTSTATUS NTAPI RtlGetVersion (PRTL_OSVERSIONINFOEXW); PSID_IDENTIFIER_AUTHORITY NTAPI RtlIdentifierAuthoritySid (PSID); VOID NTAPI RtlInitEmptyUnicodeString (PUNICODE_STRING, PCWSTR, USHORT); VOID NTAPI RtlInitAnsiString (PANSI_STRING, PCSTR); diff --git a/winsup/cygwin/release/1.7.26 b/winsup/cygwin/release/1.7.26 index 722606cd0..50a0bc767 100644 --- a/winsup/cygwin/release/1.7.26 +++ b/winsup/cygwin/release/1.7.26 @@ -56,3 +56,7 @@ Bug fixes: - Fix typos in cygcheck which could crash Windows 8 and 8.1 machines. Fixes: http://cygwin.com/ml/cygwin/2013-11/msg00334.html + +- Show OS version correctly even on Windows 8.1 and Server 2012 R2. + Fixes: http://cygwin.com/ml/cygwin/2013-11/msg00343.html + diff --git a/winsup/cygwin/wincap.cc b/winsup/cygwin/wincap.cc index d84679df5..cdbb1c37e 100644 --- a/winsup/cygwin/wincap.cc +++ b/winsup/cygwin/wincap.cc @@ -172,8 +172,8 @@ wincapc::init () return; // already initialized GetSystemInfo (&system_info); - version.dwOSVersionInfoSize = sizeof (OSVERSIONINFOEX); - GetVersionEx (reinterpret_cast(&version)); + version.dwOSVersionInfoSize = sizeof (RTL_OSVERSIONINFOEXW); + RtlGetVersion (&version); switch (version.dwMajorVersion) { diff --git a/winsup/cygwin/wincap.h b/winsup/cygwin/wincap.h index cf42dc90e..98fef2656 100644 --- a/winsup/cygwin/wincap.h +++ b/winsup/cygwin/wincap.h @@ -43,11 +43,11 @@ struct wincaps class wincapc { - SYSTEM_INFO system_info; - OSVERSIONINFOEX version; - char osnam[40]; - ULONG_PTR wow64; - void *caps; + SYSTEM_INFO system_info; + RTL_OSVERSIONINFOEXW version; + char osnam[40]; + ULONG_PTR wow64; + void *caps; public: void init (); -- cgit v1.2.3