Files
syncthing-arm/cmd/syncthing/memsize_windows.go
T

31 lines
822 B
Go
Raw Normal View History

2014-11-16 21:13:20 +01:00
// Copyright (C) 2014 The Syncthing Authors.
2014-09-29 21:43:32 +02:00
//
2015-03-07 21:36:35 +01:00
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// You can obtain one at https://mozilla.org/MPL/2.0/.
2014-09-04 08:31:38 +02:00
2014-06-12 20:47:46 +02:00
package main
import (
"encoding/binary"
"syscall"
"unsafe"
)
var (
kernel32, _ = syscall.LoadLibrary("kernel32.dll")
globalMemoryStatusEx, _ = syscall.GetProcAddress(kernel32, "GlobalMemoryStatusEx")
)
2015-01-18 02:12:06 +01:00
func memorySize() (int64, error) {
2014-06-12 20:47:46 +02:00
var memoryStatusEx [64]byte
binary.LittleEndian.PutUint32(memoryStatusEx[:], 64)
ret, _, callErr := syscall.Syscall(uintptr(globalMemoryStatusEx), 1, uintptr(unsafe.Pointer(&memoryStatusEx[0])), 0, 0)
2014-06-12 20:47:46 +02:00
if ret == 0 {
return 0, callErr
}
2015-01-18 02:12:06 +01:00
return int64(binary.LittleEndian.Uint64(memoryStatusEx[8:])), nil
2014-06-12 20:47:46 +02:00
}