⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hxwinver.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
 *      const char* HXGetOSName( ULONG32 nPlatformID) * *  PARAMETERS: *              nPlatformID:    A platformID (defined in hxwinver.h) * *  DESCRIPTION: *              Returns an OS string. Indicates the OS, not the build of *      the player. * *  RETURNS: *              pointer to static const buffer containing OS string. */const char* HXGetOSName(ULONG32 nPlatformID){    const char* strResult = NULL;    switch (nPlatformID)    {       case (HX_PLATFORM_WIN16) :           strResult="Win16";           break;       case (HX_PLATFORM_WIN32S) :           strResult="Win32S";           break;       case (HX_PLATFORM_WIN95) :           strResult="Win95";           break;       case (HX_PLATFORM_WIN98) :           strResult="Win98";           break;       case (HX_PLATFORM_WINNT) :           strResult="WinNT";           break;       case (HX_PLATFORM_MACOT) :           strResult="MacOT";           break;       case (HX_PLATFORM_MACTCP) :           strResult="MacTCP";           break;       case (HX_PLATFORM_LINUX) :           strResult="Linux";           break;       case (HX_PLATFORM_SOLARIS) :           strResult="Solaris";           break;       case (HX_PLATFORM_IRIX) :           strResult="Irix";           break;       case (HX_PLATFORM_SUNOS) :           strResult="SunOS";           break;       case (HX_PLATFORM_SYMBIAN):           strResult="Symbian";           break;       case (HX_PLATFORM_UNKNOWN) :       default:           strResult="UNK";           break;    }    return(strResult);}/* *      const char* HXGetMachName(ULONG32 nMachineType) * *  PARAMETERS: *              nMachineType:   A machine ID (defined in hxwinver.h) * *  DESCRIPTION: *              Returns a Machine string. Indicates the installed CPU, *      not the build of the player. * *  RETURNS: *              pointer to static const buffer containing Machine string. */const char* HXGetMachName(ULONG32 nMachineType){    const char* pProcName = NULL;    switch (nMachineType)    {       case HX_MACHINE_486:           pProcName = "486";           break;       case HX_MACHINE_586:           pProcName = "586";           break;       case HX_MACHINE_686:           pProcName = "686";           break;       case HX_MACHINE_PPC:           pProcName = "PPC";           break;       case HX_MACHINE_68K:           pProcName = "68K";           break;       case HX_MACHINE_ALPHA:           pProcName = "Alpha";           break;       case HX_MACHINE_MIPS:           pProcName = "Mips";           break;       case HX_MACHINE_SPARC:           pProcName = "Sparc";           break;       case HX_MACHINE_TOOSLOW:           pProcName = "SLOW";           break;       case HX_MACHINE_ARM:           pProcName = "ARM";           break;       case HX_MACHINE_SYMEMULATOR:           pProcName = "SymbianEmulator";           break;        case HX_MACHINE_UNKNOWN:       default:           pProcName = "UNK";           break;    }    return(pProcName);}/* *      const char* HXGetVerEncodedName( HXVERSIONINFO* pVersionInfo, *                                      const char* pProductName, const char* pProductVer, *                                      const char* pDistCode) * *  PARAMETERS: *              pVersionInfo :  A pointer to the version info struct to receive the *                                              results. * *              pProductName :  A pointer to the name of the product like play16 for *                                              the 16bit compiled player or plug32 for the 32bit *                                              compiled plugin. * *              pProductVer :   A pointer to the string form of the version of the *                                              product like 2.0b3. * *              pDistCode       :       A pointer to the string form of the version of the *                                              distribution code like PN01 for the player. * *  DESCRIPTION:     *              Returns a standard formatted encoded platform string. * *  RETURNS: *              pointer to temporary buffer containing the encoded string. */const char* HXGetVerEncodedName(    HXVERSIONINFO* pVersionInfo,    const char* pProductName,    const char* pProductVer,    const char* pLanguage,    const char* pDistCode    ){#if defined(HELIX_CONFIG_NOSTATICS)    static const char _szEncodedName = '\0';    char*& szEncodedName = HXGlobalCharArray::Get(&_szEncodedName, MAX_ENCODED_NAME, "" );#else    static char szEncodedName[MAX_ENCODED_NAME]; /* Flawfinder: ignore */#endif            HX_ASSERT_VALID_READ_PTR(pVersionInfo);    HX_ASSERT_VALID_READ_PTR(pProductName);    HX_ASSERT_VALID_READ_PTR(pProductVer);    HX_ASSERT_VALID_READ_PTR(pLanguage);    HX_ASSERT_VALID_READ_PTR(pDistCode);    const char* pOSName = "UNK";    const char* pProcName = "UNK";    // Calculate OS Name from    pOSName = HXGetOSName(pVersionInfo->dwPlatformId);    // CPU/Process/machine. same thing...    pProcName = HXGetMachName(pVersionInfo->dwMachineType);#ifdef _MACINTOSH    // Macintosh OS version currently includes a wReleaseVersion number.    SafeSprintf(szEncodedName,MAX_ENCODED_NAME,"%s_%d.%d.%d_%s_%s_%s_%s_%s%s",                pOSName,                pVersionInfo->wMajorVersion,                pVersionInfo->wMinorVersion,                pVersionInfo->wReleaseVersion,                pProductVer,                pProductName,                pDistCode,                pLanguage,                pProcName,                (pVersionInfo->bFPUAvailable ? "" : "_No-FPU")                );#else    // WINDOWS and UNIX    SafeSprintf(szEncodedName,MAX_ENCODED_NAME, "%s_%d.%d_%s_%s_%s_%s_%s%s",                pOSName,                pVersionInfo->wMajorVersion,                pVersionInfo->wMinorVersion,                pProductVer,                pProductName,                pDistCode,                pLanguage,                pProcName,                (pVersionInfo->bFPUAvailable ? "" : "_No-FPU")                );#endif    return szEncodedName;};//      Code From:////      PSS ID Number: Q124207////      Authored 21-Dec-1994                    Last modified 05-Jan-1995////      The information in this article applies to:////      - Microsoft Win32 Software Development Kit (SDK) for Windows NT//      versions 3.1 and 3.5#if defined(_WIN32) BOOL IsCoProcessorPresentInWinNT(void){#if !defined(WIN32_PLATFORM_PSPC)    HKEY hKey;    SYSTEM_INFO SystemInfo;        // return FALSE if we are not running under Windows NT    // this should be expanded to cover alternative Win32 platforms        if(!(GetVersion() & 0x7FFFFFFF))    {        return(FALSE); // We can't tell, assume it doesn't    }        // we return TRUE if we're not running on x86    // other CPUs have built in floating-point, with no registry entry    GetSystemInfo(&SystemInfo);    if(SystemInfo.wProcessorArchitecture != PROCESSOR_ARCHITECTURE_INTEL)    {        return(TRUE);    }    if(RegOpenKeyEx(HKEY_LOCAL_MACHINE,                    "HARDWARE\\DESCRIPTION\\System\\FloatingPointProcessor",                    0,                    KEY_EXECUTE,                    &hKey) != ERROR_SUCCESS)    {        // GetLastError() will indicate ERROR_RESOURCE_DATA_NOT_FOUND        // if we can't find the key.  This indicates no coprocessor present        return(FALSE);    }    RegCloseKey(hKey);    return(TRUE);#else /*!defined(WIN32_PLATFORM_PSPC) */    return FALSE;#endif /* !defined(WIN32_PLATFORM_PSPC) */}#endif///////////////////////////////////////////////////////////////////////////      FUNCTION:////              HXExtractDistributionCode()////      Description:////              Extracts the distribution code resource from the version//              information of the module.////BOOL HXExtractDistributionCode(char* pDistBuffer, UINT32 ulDistBufferLen, void* hMod){    BOOL        bOk = FALSE;#if (defined(_WIN32) || defined(_WINDOWS)) && !defined(WIN32_PLATFORM_PSPC)    // load version.dll    HINSTANCE               hLib = NULL;    VERQUERYVALUE           _pVerQueryValue = NULL;    GETFILEVERSIONINFO      _pGetFileVersionInfo = NULL;    GETFILEVERSIONINFOSIZE  _pGetFileVersionInfoSize = NULL;    if (hLib = HXLoadLibrary("version.dll"))    {        _pVerQueryValue = (VERQUERYVALUE)GetProcAddress(hLib, "VerQueryValueA");        _pGetFileVersionInfo = (GETFILEVERSIONINFO)GetProcAddress(hLib, "GetFileVersionInfoA");        _pGetFileVersionInfoSize = (GETFILEVERSIONINFOSIZE)GetProcAddress(hLib, "GetFileVersionInfoSizeA");    }    if (_pVerQueryValue         &&        _pGetFileVersionInfo    &&        _pGetFileVersionInfoSize)    {        HINSTANCE hModule = (HINSTANCE)(long)hMod;        DWORD   dwVerInfoSize;        DWORD   dwVerHnd;        char    szFullPath[_MAX_PATH+1]; /* Flawfinder: ignore */        if (GetModuleFileName(hModule,szFullPath, _MAX_PATH))        {            dwVerInfoSize = _pGetFileVersionInfoSize(szFullPath, &dwVerHnd);            if (dwVerInfoSize)            {                LPSTR   lpstrVffInfo;             // Pointer to block to hold info                HANDLE  hMem;                     // handle to mem alloc'ed                // Get a block big enough to hold version info                hMem          = GlobalAlloc(GMEM_MOVEABLE, dwVerInfoSize);                lpstrVffInfo  = (char *)GlobalLock(hMem);                if(_pGetFileVersionInfo(szFullPath, dwVerHnd, dwVerInfoSize, lpstrVffInfo ))                {                    char    szGetName[_MAX_PATH]; /* Flawfinder: ignore */                    UINT    VersionLen;                    LPSTR   lpVersion;                    BOOL    bRetCode;                    SafeStrCpy(szGetName, "\\VarFileInfo\\Translation", _MAX_PATH);                    bRetCode = _pVerQueryValue(lpstrVffInfo, szGetName,                                               (void FAR* FAR*)&lpVersion, &VersionLen);                    char TransNumber[10]; /* Flawfinder: ignore */                    wsprintf(TransNumber, "%8lx", *(long *)lpVersion);                    char *pSpace = HXFindChar(TransNumber, ' ');                    while(pSpace)                    {                        *pSpace = '0';                        pSpace = (char*)HXFindChar(TransNumber, ' ');                    }                    SafeStrCpy(szGetName, "\\StringFileInfo\\", _MAX_PATH);                    SafeStrCat(szGetName, TransNumber + 4, _MAX_PATH);                    TransNumber[4] = 0;                    SafeStrCat(szGetName, TransNumber, _MAX_PATH);                    SafeStrCat(szGetName, "\\DistCode", _MAX_PATH);                    bRetCode = _pVerQueryValue(lpstrVffInfo, szGetName,                                               (void FAR* FAR*)&lpVersion, &VersionLen);                    if ( bRetCode && VersionLen && lpVersion)                    {                        SafeStrCpy(pDistBuffer,lpVersion, ulDistBufferLen);                        bOk = TRUE;                    }                }                // Let go of the memory                GlobalUnlock(hMem);                GlobalFree(hMem);            }        }        if (!bOk)        {            SafeStrCpy(pDistBuffer,"UNK", ulDistBufferLen);        }    }    HXFreeLibrary("version.dll");#elif defined (_MACINTOSH)    // dist code stored in STR 1000 resource of application    INT16 strResId = 1000;    StringHandle hStr = ::GetString(strResId);    if (hStr)    {        if ((*hStr)[0] < ulDistBufferLen)        {            strncpy(pDistBuffer,(char*)*hStr+1,(*hStr)[0]); /* Flawfinder: ignore */            pDistBuffer[(*hStr)[0]] = 0;        }        ::ReleaseResource((Handle)hStr);        bOk = TRUE;    }    else    {        SafeStrCpy(pDistBuffer,"UNK", ulDistBufferLen);    }    #endif // defined(_WIN32) || defined(_WINDOWS)    return bOk;}#if defined(_MACINTOSH) || defined(_MAC_UNIX)// Support functions for HXGetWinVer for Macintosh#if !defined(_CARBON) && !defined(_MAC_UNIX) // Carbon code runs only on PPC processors with OT so runtime checks are pointlessBOOLHasOpenTransport (void){    OSErr   theErr = noErr;    LONG32  result;    Boolean hasOT = FALSE;    theErr = Gestalt(gestaltOpenTpt, &result);    hasOT = theErr == noErr &&        (result & gestaltOpenTptPresentMask) != 0 &&        (result & gestaltOpenTptTCPPresentMask) != 0;    return hasOT;}BOOLHasFPU(void){    long    theFPU;    /* Determine the coprocessor type */    Gestalt(gestaltFPUType, &theFPU);    if(theFPU == gestaltNoFPU)        return FALSE;    return TRUE;}BOOLIsPPC(void) {    long    theCPU;    Gestalt(gestaltNativeCPUtype, &theCPU);    if (theCPU >= gestaltCPU601) return(TRUE);    return(FALSE);}#endif // !_CARBONstatic UINT16 BCDtoDecimal(UINT16 bcd){    UINT16 decimal;    decimal =            1 * ((bcd & 0x000F) >> 0)        +   10 * ((bcd & 0x00F0) >> 4)         +  100 * ((bcd & 0x0F00) >> 8)         + 1000 * ((bcd & 0xF000) >> 12);     return decimal;}voidGetMacSystemVersion(UINT16 *major, UINT16 *minor, UINT16 *release){    long    gestVer;    UINT16  ver, bigRev, littleRev;    OSErr err = Gestalt(gestaltSystemVersion, &gestVer); // returns a BCD number, like 0x00001015 for 10.1.5    if (err == noErr)    {        ver =       BCDtoDecimal((gestVer & 0x0000FF00) >> 8);        bigRev =    BCDtoDecimal((gestVer & 0x000000F0) >> 4);        littleRev = BCDtoDecimal((gestVer & 0x0000000F));    }    else    {        ver = bigRev = littleRev = 0;    }        //don't want to include mathlib in plugin//      ::sprintf(s,"%ld.%ld.%ld",ver,majorRev,minorRev);//      ver += 0x30; majorRev += 0x30; minorRev += 0x30;  // GR 7/4/02 why was this converting to ascii? (the conversion would fail for numbers over 9 anyway)    if (major)      *major = ver;    if (minor)      *minor = bigRev;    if (release)    *release = littleRev;}#endif // _MACINTOSH

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -