com php-src: using correct manifest, GetVersionEx can recognise versions: ext/standard/info.c
| From: | Anatol Belski | Date: | Thu, 28 May 2015 21:23:27 +0000 |
| Subject: | com php-src: using correct manifest, GetVersionEx can recognise versions: ext/standard/info.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-86978@lists.php.net to get a copy of this message | ||
Commit: e4ca770f95d0eb2893f1db90a0b4a2577e5973c6
Author: Anatol Belski <ab@php.net> Thu, 28 May 2015 03:11:51 +0200
Parents: 4bbfa2469ef4d807ad1499c912d690fd3fe8b629
Branches: master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=e4ca770f95d0eb2893f1db90a0b4a2577e5973c6
Log:
using correct manifest, GetVersionEx can recognise versions
Changed paths:
M ext/standard/info.c
Diff:
diff --git a/ext/standard/info.c b/ext/standard/info.c
index 9490aae...c5651b4 100644
--- a/ext/standard/info.c
+++ b/ext/standard/info.c
@@ -307,7 +307,17 @@ char* php_get_windows_name()
GetSystemInfo(&si);
}
- if (VER_PLATFORM_WIN32_NT==osvi.dwPlatformId && osvi.dwMajorVersion >= 6 ) {
+ if (VER_PLATFORM_WIN32_NT==osvi.dwPlatformId && osvi.dwMajorVersion >= 10) {
+ if (osvi.dwMajorVersion == 10) {
+ if( osvi.dwMinorVersion == 0 ) {
+ if( osvi.wProductType == VER_NT_WORKSTATION ) {
+ major = "Windows 10";
+ } else {
+ major = "Windows Server 2016";
+ }
+ }
+ }
+ } else if (VER_PLATFORM_WIN32_NT==osvi.dwPlatformId && osvi.dwMajorVersion >= 6) {
if (osvi.dwMajorVersion == 6) {
if( osvi.dwMinorVersion == 0 ) {
if( osvi.wProductType == VER_NT_WORKSTATION ) {
@@ -323,6 +333,11 @@ char* php_get_windows_name()
}
} else if ( osvi.dwMinorVersion == 2 ) {
/* could be Windows 8/Windows Server 2012, could be Windows 8.1/Windows Server 2012 R2 */
+ /* XXX and one more X - the above comment is true if no manifest is used for two cases:
+ - if the PHP build doesn't use the correct manifest
+ - if PHP DLL loaded under some binary that doesn't use the correct manifest
+
+ So keep the handling here as is for now, even if we know 6.2 is win8 and nothing else, and
think about an improvement. */
OSVERSIONINFOEX osvi81;
DWORDLONG dwlConditionMask = 0;
int op = VER_GREATER_EQUAL;
@@ -353,6 +368,12 @@ char* php_get_windows_name()
major = "Windows Server 2012";
}
}
+ } else if (osvi.dwMinorVersion == 3) {
+ if( osvi.wProductType == VER_NT_WORKSTATION ) {
+ major = "Windows 8.1";
+ } else {
+ major = "Windows Server 2012 R2";
+ }
} else {
major = "Unknown Windows version";
}