📄 platinfo.c
字号:
#ifdef __cplusplus
extern "C" {
#endif
#include <stdio.h>
#include "platinfo.h"
#include "common.h"
#include "utils.h"
#ifdef WIN32
#include <Windows.h>
#endif
#ifdef WIN32
int GetOSVer(char *buf, unsigned long buflen, char *errbuf)
{
OSVERSIONINFO VersionInfo;
memset(buf, 0, buflen);
memset(&VersionInfo, 0, sizeof(OSVERSIONINFO));
VersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
if(!GetVersionEx(&VersionInfo))
{
strcpy(errbuf, "2:GetVersionEx() error");
return -1;
}
if (VersionInfo.dwPlatformId == VER_PLATFORM_WIN32s)
{
strcpy(buf, "Windows 3.1");
}
else if (VersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
{
if (VersionInfo.dwMinorVersion == 0)
{
strcpy(buf, "Windows 95");
}
else if (VersionInfo.dwMinorVersion == 10)
{
strcpy(buf, "Windows 98");
}
else if (VersionInfo.dwMinorVersion == 90)
{
strcpy(buf, "Windows Me");
}
else
{
strcpy(errbuf, "1:Unknown OS Version");
return -1;
}
}
else if (VersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT)
{
if (VersionInfo.dwMajorVersion == 3)
{
if (strlen(VersionInfo.szCSDVersion))
{
sprintf(buf, "Windows NT 3.51,%s", VersionInfo.szCSDVersion);
}
else
{
strcpy(buf, "Windows NT 3.51");
}
}
else if (VersionInfo.dwMajorVersion == 4)
{
if (strlen(VersionInfo.szCSDVersion))
{
sprintf(buf, "Windows NT 4.0,%s", VersionInfo.szCSDVersion);
}
else
{
strcpy(buf, "Windows NT 4.0");
}
}
else if (VersionInfo.dwMajorVersion == 5)
{
if (VersionInfo.dwMinorVersion == 0)
{
if (strlen(VersionInfo.szCSDVersion))
{
sprintf(buf, "Windows 2000,%s", VersionInfo.szCSDVersion);
}
else
{
strcpy(buf, "Windows 2000");
}
}
else if (VersionInfo.dwMinorVersion == 1)
{
if (strlen(VersionInfo.szCSDVersion))
{
sprintf(buf, "Windows XP,%s", VersionInfo.szCSDVersion);
}
else
{
strcpy(buf, "Windows XP");
}
}
else if (VersionInfo.dwMinorVersion == 2)
{
if (strlen(VersionInfo.szCSDVersion))
{
sprintf(buf, "Windows Server 2003,%s", VersionInfo.szCSDVersion);
}
else
{
strcpy(buf, "Windows Server 2003");
}
}
else
{
strcpy(errbuf, "1:Unknown OS Version");
return -1;
}
}
else
{
strcpy(errbuf, "1:Unknown OS Version");
return -1;
}
}
else
{
strcpy(errbuf, "1:Unknown OS Version");
return -1;
}
return 0;
}
#elif defined(LINUX)
int GetOSVer(char *buf, unsigned long buflen, char *errbuf)
{
char szCmd[MIN_BUF_LEN];
int ret;
memset(buf, 0, buflen);
strcpy(szCmd, "uname -s -r|awk -F- '{printf \"%s\",$1}'");
ret = my_system(szCmd, DEFAULT_COMMAND_TIMEOUT, buf, buflen);
if (ret != 0)
{
strcpy(errbuf, "2:my_system() error");
return -1;
}
if (strlen(buf) == 0)
{
strcpy(errbuf, "2:uname error");
return -1;
}
return 0;
}
#elif defined(SOLARIS)
int GetOSVer(char *buf, unsigned long buflen, char *errbuf)
{
char szCmd[MIN_BUF_LEN];
int ret;
memset(buf, 0, buflen);
strcpy(szCmd, "uname -s -r");
ret = my_system(szCmd, DEFAULT_COMMAND_TIMEOUT, buf, buflen);
if (ret != 0)
{
strcpy(errbuf, "2:my_system() error");
return -1;
}
if (strlen(buf) == 0)
{
strcpy(errbuf, "2:uname error");
return -1;
}
return 0;
}
#elif defined(AIX)
int GetOSVer(char *buf, unsigned long buflen, char *errbuf)
{
char szCmd[MIN_BUF_LEN];
int ret;
memset(buf, 0, buflen);
strcpy(szCmd, "uname -s -r -v|awk '{printf \"%s %s.%s\",$1,$3,$2}'");
ret = my_system(szCmd, DEFAULT_COMMAND_TIMEOUT, buf, buflen);
if (ret != 0)
{
strcpy(errbuf, "2:my_system() error");
return -1;
}
if (strlen(buf) == 0)
{
strcpy(errbuf, "2:uname error");
return -1;
}
return 0;
}
#endif
int GetSysHostName(char *buf, unsigned long buflen, char *errbuf)
{
char szCmd[MIN_BUF_LEN];
int ret;
memset(buf, 0, buflen);
#ifdef WIN32
ret = GetComputerName(buf, &buflen);
if (!ret)
{
strcpy(errbuf, "2:GetComputerName() error");
return -1;
}
#else
strcpy(szCmd, "hostname");
ret = my_system(szCmd, DEFAULT_COMMAND_TIMEOUT, buf, buflen);
if (ret != 0)
{
strcpy(errbuf, "2:my_system() error");
return -1;
}
if (strlen(buf) == 0)
{
strcpy(errbuf, "2:hostname error");
return -1;
}
#endif
return 0;
}
#ifdef __cplusplus
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -