agent/platform/wmi.go (71 lines of code) (raw):

// Copyright 2024 Amazon.com, Inc. or its affiliates. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"). You may not // use this file except in compliance with the License. A copy of the // License is located at // // http://aws.amazon.com/apache2.0/ // // or in the "license" file accompanying this file. This file is distributed // on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, // either express or implied. See the License for the specific language governing // permissions and limitations under the License. //go:build windows // +build windows // Package platform contains platform specific utilities. package platform import "github.com/yusufpapurcu/wmi" type Win32_ComputerSystemProduct struct { UUID string } type Win32_Processor struct { Caption string DeviceID string Manufacturer string MaxClockSpeed uint32 Name string SocketDesignation string } type Win32_PhysicalMemory struct { Capacity uint64 DeviceLocator string MemoryType uint16 Name string Tag string TotalWidth uint16 } type Win32_BIOS struct { Manufacturer string Name string SerialNumber string SMBIOSBIOSVersion string Version string } type Win32_ComputerSystem struct { DNSHostName string Domain string Manufacturer string Model string Name string PrimaryOwnerName string TotalPhysicalMemory uint64 } type Win32_DiskDrive struct { Caption string DeviceID string Model string Partitions uint32 Size uint64 } type Win32_OperatingSystem struct { Caption string OperatingSystemSKU uint32 Version string } type Win32_PnPEntity struct { DeviceID string Service string Name string } type Win32_PnPSignedDriver struct { Description string DriverVersion string } func GetSingleWMIObject[T interface{}](whereClause string) (wmiObject T, err error) { if wmiData, err := GetWMIData[T](whereClause); err != nil || len(wmiData) == 0 { return wmiObject, err } else { wmiObject = wmiData[0] return wmiObject, nil } } func GetWMIData[T interface{}](whereClause string) (wmiData []T, err error) { q := wmi.CreateQuery(&wmiData, whereClause) err = wmi.Query(q, &wmiData) return }