I would suggest use loadLibrary to retrieve the function, if not available,
then return 0 (For Win Xp and Vista);

On Wed, Jul 22, 2020 at 2:34 PM Alex Bennée <alex.ben...@linaro.org> wrote:

> It seems GetPhysicallyInstalledSystemMemory isn't available in the
> MinGW headers so we have to declare it ourselves. Compile tested only.
>
> Cc: Stefan Weil <s...@weilnetz.de>
> Signed-off-by: Alex Bennée <alex.ben...@linaro.org>
> ---
>  util/oslib-win32.c | 15 +++++++++++++--
>  1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/util/oslib-win32.c b/util/oslib-win32.c
> index 31030463cc9..f0f94833197 100644
> --- a/util/oslib-win32.c
> +++ b/util/oslib-win32.c
> @@ -43,6 +43,8 @@
>  /* this must come after including "trace.h" */
>  #include <shlobj.h>
>
> +WINBASEAPI BOOL WINAPI GetPhysicallyInstalledSystemMemory (PULONGLONG);
> +
>  void *qemu_oom_check(void *ptr)
>  {
>      if (ptr == NULL) {
> @@ -831,6 +833,15 @@ char *qemu_get_host_name(Error **errp)
>
>  size_t qemu_get_host_physmem(void)
>  {
> -    /* currently unimplemented */
> -    return 0;
> +    ULONGLONG mem;
> +
> +    if (GetPhysicallyInstalledSystemMemory(&mem)) {
> +        if (mem > SIZE_MAX) {
> +            return SIZE_MAX;
> +        } else {
> +            return mem;
> +        }
> +    } else {
> +        return 0;
> +    }
>  }
> --
> 2.20.1
>
>
>

-- 
         此致
礼
罗勇刚
Yours
    sincerely,
Yonggang Luo

Reply via email to