agent/startup/model/model.go (92 lines of code) (raw):
// Copyright 2016 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 model provides model definition for startup processor
package model
import (
"github.com/aws/amazon-ssm-agent/agent/startup/util/interop"
)
// Dcb structure
// http://pinvoke.net/default.aspx/Structures/DCB.html
type Dcb struct {
DCBlength uint32
BaudRate uint32
flags [4]byte
wReserved uint16
XonLim uint16
XoffLim uint16
ByteSize byte
Parity byte
StopBits byte
XonChar byte
XoffChar byte
ErrorChar byte
EOFChar byte
EvtChar byte
wReserved1 uint16
}
// DriverInfo represents driver information that is written to console.
type DriverInfo struct {
Name string
Version string
}
// WindowsInfo contains ProductName and BuildLabEx from HKLM:\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion.
type WindowsInfo struct {
ProductName string `json:"ProductName"`
BuildLabEx string `json:"BuildLabEx"`
CurrentMajorVersionNumber int `json:"CurrentMajorVersionNumber"`
CurrentMinorVersionNumber int `json:"CurrentMinorVersionNumber"`
}
// PvEntity contains Version from HKLM:\SOFTWARE\Amazon\PVDriver.
type PvPackageInfo struct {
Name string `json:"PSChildName"`
Version string `json:"Version"`
}
// NitroEnclavesEntity contains Version from HKLM:\SOFTWARE\Amazon\AwsNitroEnclaves.
type NitroEnclavesPackageInfo struct {
Name string `json:"PSChildName"`
Version string `json:"Version"`
}
// WindowsDriver contains OriginalFileName and Version from result of Get-WindowsDriver.
type WindowsDriver struct {
OriginalFileName string `json:"OriginalFileName"`
Version string `json:"Version"`
}
// EventLog contains Id, LogName, Level, ProviderName, Message, Properties, and TimeCreated from result of Get-WinEvent
type EventLog struct {
ID uint32 `json:"Id"`
LogName string `json:"LogName"`
Level uint8 `json:"Level"`
ProviderName string `json:"ProviderName"`
Message string `json:"Message"`
Properties []EventLogProperties `json:"Properties"`
TimeCreated string `json:"TimeCreated"`
}
// EventLogProperties contains Value used by EventLog struct.
// The value can be any type.
type EventLogProperties struct {
Value interface{} `json:"Value"`
}
// SPCR table defined.
// See https://msdn.microsoft.com/en-us/library/windows/hardware/dn639132(v=vs.85).aspx
func get_struct_SPCR_TABLE() *interop.StructDef {
sd := interop.NewStructDef()
sd.AddField("Signature", 4)
sd.AddField("Length", 4)
sd.AddField("Revision", 1)
sd.AddField("Checksum", 1)
sd.AddField("OEMID", 6)
sd.AddField("OEMTableID", 8)
sd.AddField("OEMRevision", 4)
sd.AddField("CreatorID", 4)
sd.AddField("CreatorRevision", 4)
sd.AddField("InterfaceType", 1)
sd.AddField("Reserved1", 3)
sd.AddField("AddressSpace", 1)
sd.AddField("BitWidth", 1)
sd.AddField("BitOffset", 1)
sd.AddField("AccessSize", 1)
sd.AddField("Address", 8)
sd.AddField("InterruptType", 1)
sd.AddField("Irq", 1)
sd.AddField("GSI", 4)
sd.AddField("BaudRate", 1)
sd.AddField("Parity", 1)
sd.AddField("StopBits", 1)
sd.AddField("FlowControl", 1)
sd.AddField("TerminalType", 1)
sd.AddField("Reserved2", 1)
sd.AddField("PCIDeviceID", 2)
sd.AddField("PCIVendorID", 2)
sd.AddField("PCIBusNumber", 1)
sd.AddField("PCIDeviceNumber", 1)
sd.AddField("PCIFunctionNumber", 1)
sd.AddField("PCIFlags", 4)
sd.AddField("PCISegment", 1)
sd.AddField("Reserved3", 4)
return sd
}