mirror of
https://github.com/prometheus-community/windows_exporter.git
synced 2026-02-24 05:36:36 +00:00
Remove temporary uintptr values, as the garbage collector can move addresses from under them.
Signed-off-by: Ben Ridley <benridley29@gmail.com>
This commit is contained in:
@@ -54,11 +54,9 @@ func GetLPPerformanceInfo() (LPPerformanceInformation, error) {
|
|||||||
var pi LPPerformanceInformation
|
var pi LPPerformanceInformation
|
||||||
size := (uint32)(unsafe.Sizeof(pi))
|
size := (uint32)(unsafe.Sizeof(pi))
|
||||||
pi.cb = size
|
pi.cb = size
|
||||||
pPi := uintptr(unsafe.Pointer(&pi))
|
r1, _, err := procGetPerformanceInfo.Call(uintptr(unsafe.Pointer(&pi)), uintptr(size))
|
||||||
r1, _, err := procGetPerformanceInfo.Call(pPi, uintptr(size))
|
|
||||||
|
|
||||||
if ret := *(*bool)(unsafe.Pointer(&r1)); ret == false {
|
if ret := *(*bool)(unsafe.Pointer(&r1)); !ret {
|
||||||
// returned false
|
|
||||||
return LPPerformanceInformation{}, err
|
return LPPerformanceInformation{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,26 +68,24 @@ func GetPerformanceInfo() (PerformanceInformation, error) {
|
|||||||
var lppi LPPerformanceInformation
|
var lppi LPPerformanceInformation
|
||||||
size := (uint32)(unsafe.Sizeof(lppi))
|
size := (uint32)(unsafe.Sizeof(lppi))
|
||||||
lppi.cb = size
|
lppi.cb = size
|
||||||
pLppi := uintptr(unsafe.Pointer(&lppi))
|
r1, _, err := procGetPerformanceInfo.Call(uintptr(unsafe.Pointer(&lppi)), uintptr(size))
|
||||||
r1, _, err := procGetPerformanceInfo.Call(pLppi, uintptr(size))
|
|
||||||
|
|
||||||
if ret := *(*bool)(unsafe.Pointer(&r1)); ret == false {
|
if ret := *(*bool)(unsafe.Pointer(&r1)); !ret {
|
||||||
// returned false
|
|
||||||
return PerformanceInformation{}, err
|
return PerformanceInformation{}, err
|
||||||
}
|
}
|
||||||
|
|
||||||
var pi PerformanceInformation
|
var pi PerformanceInformation
|
||||||
pi.cb = lppi.cb
|
pi.cb = lppi.cb
|
||||||
pi.CommitTotal = *(*uint32)(unsafe.Pointer(&lppi.CommitTotal))
|
pi.CommitTotal = *(lppi.CommitTotal)
|
||||||
pi.CommitLimit = *(*uint32)(unsafe.Pointer(&lppi.CommitLimit))
|
pi.CommitLimit = *(lppi.CommitLimit)
|
||||||
pi.CommitPeak = *(*uint32)(unsafe.Pointer(&lppi.CommitPeak))
|
pi.CommitPeak = *(lppi.CommitPeak)
|
||||||
pi.PhysicalTotal = *(*uint32)(unsafe.Pointer(&lppi.PhysicalTotal))
|
pi.PhysicalTotal = *(lppi.PhysicalTotal)
|
||||||
pi.PhysicalAvailable = *(*uint32)(unsafe.Pointer(&lppi.PhysicalAvailable))
|
pi.PhysicalAvailable = *(lppi.PhysicalAvailable)
|
||||||
pi.SystemCache = *(*uint32)(unsafe.Pointer(&lppi.SystemCache))
|
pi.SystemCache = *(lppi.SystemCache)
|
||||||
pi.KernelTotal = *(*uint32)(unsafe.Pointer(&lppi.KernelTotal))
|
pi.KernelTotal = *(lppi.KernelTotal)
|
||||||
pi.KernelPaged = *(*uint32)(unsafe.Pointer(&lppi.KernelPaged))
|
pi.KernelPaged = *(lppi.KernelPaged)
|
||||||
pi.KernelNonpaged = *(*uint32)(unsafe.Pointer(&lppi.KernelNonpaged))
|
pi.KernelNonpaged = *(lppi.KernelNonpaged)
|
||||||
pi.PageSize = *(*uint32)(unsafe.Pointer(&lppi.PageSize))
|
pi.PageSize = *(lppi.PageSize)
|
||||||
pi.HandleCount = lppi.HandleCount
|
pi.HandleCount = lppi.HandleCount
|
||||||
pi.ProcessCount = lppi.ProcessCount
|
pi.ProcessCount = lppi.ProcessCount
|
||||||
pi.ThreadCount = lppi.ThreadCount
|
pi.ThreadCount = lppi.ThreadCount
|
||||||
|
|||||||
@@ -111,8 +111,7 @@ var (
|
|||||||
func GlobalMemoryStatusEx() (MemoryStatus, error) {
|
func GlobalMemoryStatusEx() (MemoryStatus, error) {
|
||||||
var mse memoryStatusEx
|
var mse memoryStatusEx
|
||||||
mse.dwLength = (uint32)(unsafe.Sizeof(mse))
|
mse.dwLength = (uint32)(unsafe.Sizeof(mse))
|
||||||
pMse := uintptr(unsafe.Pointer(&mse))
|
r1, _, err := procGlobalMemoryStatusEx.Call(uintptr(unsafe.Pointer(&mse)))
|
||||||
r1, _, err := procGlobalMemoryStatusEx.Call(pMse)
|
|
||||||
|
|
||||||
if ret := *(*bool)(unsafe.Pointer(&r1)); ret == false {
|
if ret := *(*bool)(unsafe.Pointer(&r1)); ret == false {
|
||||||
return MemoryStatus{}, err
|
return MemoryStatus{}, err
|
||||||
@@ -134,8 +133,7 @@ func GlobalMemoryStatusEx() (MemoryStatus, error) {
|
|||||||
// https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsysteminfo
|
// https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsysteminfo
|
||||||
func GetSystemInfo() SystemInfo {
|
func GetSystemInfo() SystemInfo {
|
||||||
var info lpSystemInfo
|
var info lpSystemInfo
|
||||||
pInfo := uintptr(unsafe.Pointer(&info))
|
procGetSystemInfo.Call(uintptr(unsafe.Pointer(&info)))
|
||||||
procGetSystemInfo.Call(pInfo)
|
|
||||||
fmt.Printf("%+v", info)
|
fmt.Printf("%+v", info)
|
||||||
return SystemInfo{
|
return SystemInfo{
|
||||||
Arch: ProcessorArchitecture(info.Arch.WProcessorArchitecture),
|
Arch: ProcessorArchitecture(info.Arch.WProcessorArchitecture),
|
||||||
|
|||||||
Reference in New Issue
Block a user