This driver determines at boot if the specified pci devices found in the DeviceSpecificBusInfoLib library are properly connected


To employ this driver, simply build it and supply the DeviceSpecificBusInfoLib which implements the DeviceSpecificBusInfoLib.h interface.

The info for each PCI device will be contained within the DEVICE_PCI_INFO struct which contains fields:

DeviceName: A friendly name for the device. This Ascii name will be contained within the AdditionalInfo2 field of the MU_TELEMETRY_CPER_SECTION_DATA telemetry struct.

IsFatal: A boolean which if true states that the pci device being absent crashes the device upon OS boot

SegmentNumber, BusNumber, DeviceNumber, FunctionNumber : Info required to locate the PCI device

The interface has methods:

GetPciCheckDevices() : Populates an array of pointers to DEVICE_PCI_INFO structs. The pointer to the unallocated array is passed in as an argument and should be allocated within the function. The DEVICE_PCI_INFO structs should be global variables in the library and the array should contain their addresses. Function returns the number of DEVICE_PCI_INFO struct pointers within the allocated array.

If there are specific cases when you do not want to check for certain PCI devices (such as when a device has been purposefully disabled), simply exclude the DEVICE_PCI_INFO associated with that device when allocating and returning the array.

Copyright (C) Microsoft Corporation. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent