using NvAPIWrapper.Native.GPU; using NvAPIWrapper.Native.GPU.Structures; namespace NvAPIWrapper.GPU { /// /// Contains information about the PCI-e connection /// public class PCIeInformation { internal PCIeInformation(PrivatePCIeInfoV2.PCIePerformanceStateInfo stateInfo) { TransferRateInMTps = stateInfo.TransferRateInMTps; Generation = stateInfo.Generation; Lanes = stateInfo.Lanes; Version = stateInfo.Version; } /// /// Gets the PCI-e generation /// public PCIeGeneration Generation { get; } /// /// Gets the PCI-e down stream lanes /// public uint Lanes { get; } /// /// Gets the PCIe transfer rate in Mega Transfers per Second /// public uint TransferRateInMTps { get; } /// /// Gets the PCI-e version /// public PCIeGeneration Version { get; } /// public override string ToString() { var v = "Unknown"; switch (Version) { case PCIeGeneration.PCIe1: v = "PCIe 1.0"; break; case PCIeGeneration.PCIe1Minor1: v = "PCIe 1.1"; break; case PCIeGeneration.PCIe2: v = "PCIe 2.0"; break; case PCIeGeneration.PCIe3: v = "PCIe 3.0"; break; } return $"{v} x{Lanes} - {TransferRateInMTps} MTps"; } } }