static bool windows10orGreater()

in MFCClient/WindowsVersionHelper.h [47:77]


    static bool windows10orGreater()
    {
        static const wchar_t kernel32[] = L"\\kernel32.dll";
        wchar_t path[MAX_PATH];

        unsigned int n = GetSystemDirectory(path, MAX_PATH);
        memcpy_s(path + n, MAX_PATH, kernel32, sizeof(kernel32));

        unsigned int size = GetFileVersionInfoSize(path, NULL);
        if (size == 0)
        {
            return false;
        }

        std::vector<char> verionInfo;
        verionInfo.resize(size);
        BOOL result = GetFileVersionInfo(path, 0, size, verionInfo.data());
        if (!result || GetLastError() != S_OK)
        {
            return false;
        }

        VS_FIXEDFILEINFO *vinfo;
        result = VerQueryValue(verionInfo.data(), L"\\", (LPVOID *)&vinfo, &size);
        if (!result || size < sizeof(VS_FIXEDFILEINFO))
        {
            return false;
        }

        return HIWORD(vinfo->dwProductVersionMS) >= 10;
    }