package hardware // CheckBaseBoardChanged 检测主板是否发生变化(对比两次采集结果) func CheckBaseBoardChanged(now []BaseBoard, newest []BaseBoard) bool { if len(now) != len(newest) { return true } for _, n1 := range now { in := false for _, n2 := range newest { if n1.Product != n2.Product { continue } if n1.Manufacturer != n2.Manufacturer { continue } in = true break } if !in { return true } } return false } // CheckBiosChanged 检测 BIOS 是否发生变化 func CheckBiosChanged(now []Bios, newest []Bios) bool { if len(now) != len(newest) { return true } for _, n1 := range now { in := false for _, n2 := range newest { if n1.SMBIOSBIOSVersion != n2.SMBIOSBIOSVersion { continue } in = true break } if !in { return true } } return false } // CheckProcessorChanged 检测 CPU 是否发生变化(按名称对比) func CheckProcessorChanged(now []Processor, newest []Processor) bool { if len(now) != len(newest) { return true } // 有多个相同硬件时,顺序可能是乱序,对比过的放入索引列表中,防止重复对比 // 例如: now = [1,1,1] newest = [1,2,3] 一定要将已对比的排除掉 index := make(map[int]int) for _, n1 := range now { in := false for i2, n2 := range newest { if n1.Name != n2.Name { continue } if _, ok := index[i2]; ok { continue } in = true index[i2] = i2 } if !in { return true } } return false } // CheckPhysicalMemoryChanged 检测内存条是否发生变化(按容量对比) func CheckPhysicalMemoryChanged(now []PhysicalMemory, newest []PhysicalMemory) bool { if len(now) != len(newest) { return true } // 有多个相同硬件时,顺序可能是乱序,对比过的放入索引列表中,防止重复对比 // 例如: now = [1,1,1] newest = [1,2,3] 一定要将已对比的排除掉 index := make(map[int]int) for _, n1 := range now { in := false for i2, n2 := range newest { if n1.Capacity != n2.Capacity { continue } if _, ok := index[i2]; ok { continue } in = true index[i2] = i2 break } if !in { return true } } return false } // CheckVideoControllerChanged 检测显卡是否发生变化(按名称对比) func CheckVideoControllerChanged(now []VideoController, newest []VideoController) bool { if len(now) != len(newest) { return true } // 有多个相同硬件时,顺序可能是乱序,对比过的放入索引列表中,防止重复对比 // 例如: now = [1,1,1] newest = [1,2,3] 一定要将已对比的排除掉 index := make(map[int]int) for _, n1 := range now { in := false for i2, n2 := range newest { if n1.Name != n2.Name { continue } if _, ok := index[i2]; ok { continue } in = true index[i2] = i2 break } if !in { return true } } return false } // CheckSoundDeviceChanged 检测声卡是否发生变化(按名称对比) func CheckSoundDeviceChanged(now []SoundDevice, newest []SoundDevice) bool { if len(now) != len(newest) { return true } // 有多个相同硬件时,顺序可能是乱序,对比过的放入索引列表中,防止重复对比 // 例如: now = [1,1,1] newest = [1,2,3] 一定要将已对比的排除掉 index := make(map[int]int) for _, n1 := range now { in := false for i2, n2 := range newest { if n1.Name != n2.Name { continue } if _, ok := index[i2]; ok { continue } in = true index[i2] = i2 break } if !in { return true } } return false } // CheckNetworkAdapterChanged 检测网卡是否发生变化(按名称对比) func CheckNetworkAdapterChanged(now []NetworkAdapter, newest []NetworkAdapter) bool { if len(now) != len(newest) { return true } // 有多个相同硬件时,顺序可能是乱序,对比过的放入索引列表中,防止重复对比 // 例如: now = [1,1,1] newest = [1,2,3] 一定要将已对比的排除掉 index := make(map[int]int) for _, n1 := range now { in := false for i2, n2 := range newest { if n1.Name != n2.Name { continue } if _, ok := index[i2]; ok { continue } in = true index[i2] = i2 break } if !in { return true } } return false } // CheckDiskDriveChanged 检测硬盘是否发生变化(按型号对比) func CheckDiskDriveChanged(now []DiskDrive, newest []DiskDrive) bool { if len(now) != len(newest) { return true } // 有多个相同硬件时,顺序可能是乱序,对比过的放入索引列表中,防止重复对比 // 例如: now = [1,1,1] newest = [1,2,3] 一定要将已对比的排除掉 index := make(map[int]int) for _, n1 := range now { in := false for i2, n2 := range newest { if n1.Caption != n2.Caption { continue } if _, ok := index[i2]; ok { continue } in = true index[i2] = i2 break } if !in { return true } } return false } // CheckDesktopMonitorChanged 检测显示器是否发生变化(按 PNP 设备 ID 对比) func CheckDesktopMonitorChanged(now []DesktopMonitor, newest []DesktopMonitor) bool { if len(now) != len(newest) { return true } // 有多个相同硬件时,顺序可能是乱序,对比过的放入索引列表中,防止重复对比 // 例如: now = [1,1,1] newest = [1,2,3] 一定要将已对比的排除掉 index := make(map[int]int) for _, n1 := range now { in := false for i2, n2 := range newest { if n1.PNPDeviceID != n2.PNPDeviceID { continue } if _, ok := index[i2]; ok { continue } in = true index[i2] = i2 break } if !in { return true } } return false } // CheckKeyboardChanged 检测键盘是否发生变化(按描述对比) func CheckKeyboardChanged(now []Keyboard, newest []Keyboard) bool { if len(now) != len(newest) { return true } // 有多个相同硬件时,顺序可能是乱序,对比过的放入索引列表中,防止重复对比 // 例如: now = [1,1,1] newest = [1,2,3] 一定要将已对比的排除掉 index := make(map[int]int) for _, n1 := range now { in := false for i2, n2 := range newest { if n1.Description != n2.Description { continue } if _, ok := index[i2]; ok { continue } in = true index[i2] = i2 break } if !in { return true } } return false } // CheckPointingDeviceChanged 检测指点设备是否发生变化(按描述对比) func CheckPointingDeviceChanged(now []PointingDevice, newest []PointingDevice) bool { if len(now) != len(newest) { return true } // 有多个相同硬件时,顺序可能是乱序,对比过的放入索引列表中,防止重复对比 // 例如: now = [1,1,1] newest = [1,2,3] 一定要将已对比的排除掉 index := make(map[int]int) for _, n1 := range now { in := false for i2, n2 := range newest { if n1.Description != n2.Description { continue } if _, ok := index[i2]; ok { continue } in = true index[i2] = i2 break } if !in { return true } } return false }