From ee3848141c7f031072362817d0ba990d722502cd Mon Sep 17 00:00:00 2001 From: Ben Ridley Date: Thu, 18 Mar 2021 16:08:52 -0700 Subject: [PATCH] Simplify struct usage and comments Signed-off-by: Ben Ridley --- headers/psapi/psapi.go | 75 ++++++-------------------------- headers/sysinfoapi/sysinfoapi.go | 4 +- 2 files changed, 14 insertions(+), 65 deletions(-) diff --git a/headers/psapi/psapi.go b/headers/psapi/psapi.go index c8ef66b4..77f837a9 100644 --- a/headers/psapi/psapi.go +++ b/headers/psapi/psapi.go @@ -6,38 +6,20 @@ import ( "golang.org/x/sys/windows" ) -// LPPerformanceInformation is a wrapper of the PERFORMANCE_INFORMATION struct. +// PerformanceInformation is a wrapper of the PERFORMANCE_INFORMATION struct. // https://docs.microsoft.com/en-us/windows/win32/api/psapi/ns-psapi-performance_information -type LPPerformanceInformation struct { - cb uint32 - CommitTotal *uint32 - CommitLimit *uint32 - CommitPeak *uint32 - PhysicalTotal *uint32 - PhysicalAvailable *uint32 - SystemCache *uint32 - KernelTotal *uint32 - KernelPaged *uint32 - KernelNonpaged *uint32 - PageSize *uint32 - HandleCount uint32 - ProcessCount uint32 - ThreadCount uint32 -} - -// PerformanceInformation is a dereferenced version of LPPerformanceInformation type PerformanceInformation struct { cb uint32 - CommitTotal uint32 - CommitLimit uint32 - CommitPeak uint32 - PhysicalTotal uint32 - PhysicalAvailable uint32 - SystemCache uint32 - KernelTotal uint32 - KernelPaged uint32 - KernelNonpaged uint32 - PageSize uint32 + CommitTotal uint + CommitLimit uint + CommitPeak uint + PhysicalTotal uint + PhysicalAvailable uint + SystemCache uint + KernelTotal uint + KernelPaged uint + KernelNonpaged uint + PageSize uint HandleCount uint32 ProcessCount uint32 ThreadCount uint32 @@ -48,24 +30,9 @@ var ( procGetPerformanceInfo = psapi.NewProc("GetPerformanceInfo") ) -// GetLPPerformanceInfo retrieves the performance values contained in the LPPerformanceInformation structure. -// https://docs.microsoft.com/en-us/windows/win32/api/psapi/nf-psapi-getperformanceinfo -func GetLPPerformanceInfo() (LPPerformanceInformation, error) { - var pi LPPerformanceInformation - size := (uint32)(unsafe.Sizeof(pi)) - pi.cb = size - r1, _, err := procGetPerformanceInfo.Call(uintptr(unsafe.Pointer(&pi)), uintptr(size)) - - if ret := *(*bool)(unsafe.Pointer(&r1)); !ret { - return LPPerformanceInformation{}, err - } - - return pi, nil -} - // GetPerformanceInfo returns the dereferenced version of GetLPPerformanceInfo. func GetPerformanceInfo() (PerformanceInformation, error) { - var lppi LPPerformanceInformation + var lppi PerformanceInformation size := (uint32)(unsafe.Sizeof(lppi)) lppi.cb = size r1, _, err := procGetPerformanceInfo.Call(uintptr(unsafe.Pointer(&lppi)), uintptr(size)) @@ -74,21 +41,5 @@ func GetPerformanceInfo() (PerformanceInformation, error) { return PerformanceInformation{}, err } - var pi PerformanceInformation - pi.cb = lppi.cb - pi.CommitTotal = *(lppi.CommitTotal) - pi.CommitLimit = *(lppi.CommitLimit) - pi.CommitPeak = *(lppi.CommitPeak) - pi.PhysicalTotal = *(lppi.PhysicalTotal) - pi.PhysicalAvailable = *(lppi.PhysicalAvailable) - pi.SystemCache = *(lppi.SystemCache) - pi.KernelTotal = *(lppi.KernelTotal) - pi.KernelPaged = *(lppi.KernelPaged) - pi.KernelNonpaged = *(lppi.KernelNonpaged) - pi.PageSize = *(lppi.PageSize) - pi.HandleCount = lppi.HandleCount - pi.ProcessCount = lppi.ProcessCount - pi.ThreadCount = lppi.ThreadCount - - return pi, nil + return lppi, nil } diff --git a/headers/sysinfoapi/sysinfoapi.go b/headers/sysinfoapi/sysinfoapi.go index 7bfb5f85..7f48c3f7 100644 --- a/headers/sysinfoapi/sysinfoapi.go +++ b/headers/sysinfoapi/sysinfoapi.go @@ -1,7 +1,6 @@ package sysinfoapi import ( - "fmt" "unicode/utf16" "unsafe" @@ -129,12 +128,11 @@ func GlobalMemoryStatusEx() (MemoryStatus, error) { }, nil } -// GetSystemInfo wraps the GetSystemInfo function from sysinfoapi +// GetSystemInfo is an idiomatic wrapper for the GetSystemInfo function from sysinfoapi // https://docs.microsoft.com/en-us/windows/win32/api/sysinfoapi/nf-sysinfoapi-getsysteminfo func GetSystemInfo() SystemInfo { var info lpSystemInfo procGetSystemInfo.Call(uintptr(unsafe.Pointer(&info))) - fmt.Printf("%+v", info) return SystemInfo{ Arch: ProcessorArchitecture(info.Arch.WProcessorArchitecture), PageSize: info.DwPageSize,