From 069016bbc4fac01260f2addd70b67bce5ebeac70 Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Wed, 6 Feb 2019 20:17:47 +0100 Subject: setupapi: Add SP_DRVINFO_DATA.IsNewer() method to simplify comparison Signed-off-by: Simon Rozman --- setupapi/types_windows.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'setupapi/types_windows.go') diff --git a/setupapi/types_windows.go b/setupapi/types_windows.go index 0eb640c..2dfcb70 100644 --- a/setupapi/types_windows.go +++ b/setupapi/types_windows.go @@ -321,6 +321,32 @@ func (data SP_DRVINFO_DATA) ToGo() *DrvInfoData { } } +// IsNewer method returns true if SP_DRVINFO_DATA date and version is newer than supplied parameters. +func (data SP_DRVINFO_DATA) IsNewer(DriverDate windows.Filetime, DriverVersion uint64) bool { + if data.DriverDate.HighDateTime > DriverDate.HighDateTime { + return true + } + if data.DriverDate.HighDateTime < DriverDate.HighDateTime { + return false + } + + if data.DriverDate.LowDateTime > DriverDate.LowDateTime { + return true + } + if data.DriverDate.LowDateTime < DriverDate.LowDateTime { + return false + } + + if data.DriverVersion > DriverVersion { + return true + } + if data.DriverVersion < DriverVersion { + return false + } + + return false +} + // DrvInfoData is driver information structure (member of a driver info list that may be associated with a particular device instance, or (globally) with a device information set) type DrvInfoData struct { DriverType uint32 -- cgit v1.2.3-59-g8ed1b