Skip to content

Commit

Permalink
Simplify struct usage and comments
Browse files Browse the repository at this point in the history
  • Loading branch information
benridley committed Mar 18, 2021
1 parent abd0c7a commit ac0d351
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 65 deletions.
75 changes: 13 additions & 62 deletions headers/psapi/psapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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))
Expand All @@ -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
}
4 changes: 1 addition & 3 deletions headers/sysinfoapi/sysinfoapi.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package sysinfoapi

import (
"fmt"
"unicode/utf16"
"unsafe"

Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit ac0d351

Please sign in to comment.