MCPcopy Create free account
hub / github.com/cgsecurity/testdisk / get_os

Function get_os

src/misc.c:57–243  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

55#include "misc.h"
56
57const char *get_os(void)
58{
59#ifdef WIN32
60 {
61 static char buffer[100] = {0x00};
62 /* For more information, read
63https://msdn.microsoft.com/en-us/library/windows/desktop/ms724834%28v=vs.85%29.aspx
64 */
65 OSVERSIONINFOEX Ver;
66 int Extended = 1;
67 memset(&Ver,0,sizeof(OSVERSIONINFOEX));
68 Ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
69
70 if (!GetVersionEx((OSVERSIONINFO *)&Ver)) {
71 Extended = 0;
72 Ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
73 if (!GetVersionEx((OSVERSIONINFO *)&Ver)) {
74 snprintf(buffer, sizeof(buffer) - 1, "Windows");
75 return buffer;
76 }
77 }
78
79 /* ----------------- 9x/NT4 family ------------------ */
80
81 if (Ver.dwMajorVersion == 4 && Ver.dwMinorVersion == 0)
82 {
83 /* no info about Win95 SP1, Win95 OSR2.1, Win95 OSR2.5.... */
84 if(Ver.dwBuildNumber == 950)
85 snprintf(buffer, sizeof(buffer) - 1, "Windows 95");
86 else if (Ver.dwBuildNumber == 1111)
87 snprintf(buffer, sizeof(buffer) - 1, "Windows 95 OSR2.x");
88 else if(Ver.dwBuildNumber == 1381)
89 snprintf(buffer, sizeof(buffer) - 1, "Windows NT 4.0");
90 else
91 snprintf(buffer, sizeof(buffer) - 1, "Windows 95 or NT 4.0 (%lu)", Ver.dwBuildNumber);
92 }
93 else if (Ver.dwMajorVersion == 4 && Ver.dwMinorVersion == 10)
94 {
95 /* no info about Win98 SP1.... */
96 if(Ver.dwBuildNumber == 1998)
97 snprintf(buffer, sizeof(buffer) - 1, "Windows 98");
98 else if (Ver.dwBuildNumber == 2222)
99 snprintf(buffer, sizeof(buffer) - 1, "Windows 98 SE");
100 else
101 snprintf(buffer, sizeof(buffer) - 1, "Windows 98 (%lu)", Ver.dwBuildNumber);
102 }
103 else if (Ver.dwMajorVersion == 4 && Ver.dwMinorVersion == 90)
104 {
105 if(Ver.dwBuildNumber == 3000)
106 snprintf(buffer, sizeof(buffer) - 1, "Windows ME");
107 else
108 snprintf(buffer, sizeof(buffer) - 1, "Windows ME (%lu)", Ver.dwBuildNumber);
109 }
110 else if (Ver.dwMajorVersion == 5 && Ver.dwMinorVersion == 0)
111 {
112 if(Ver.dwBuildNumber == 2195)
113 snprintf(buffer, sizeof(buffer) - 1, "Windows 2000");
114 else

Callers 8

display_versionFunction · 0.85
mainFunction · 0.85
xml_add_DFXML_creatorFunction · 0.85
display_versionFunction · 0.85
mainFunction · 0.85
display_versionFunction · 0.85
mainFunction · 0.85
display_versionFunction · 0.85

Calls 1

snprintfFunction · 0.85

Tested by 2

display_versionFunction · 0.68
mainFunction · 0.68