Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

97 lines
2.4 KiB

#ifndef _SPCIH_
#define _SPCIH_
#define IS_BRIDGE(x) ((PCI_CONFIGURATION_TYPE(&x->Config.Current)) == PCI_BRIDGE_TYPE)
#define IS_ROOTBUS(x) \
((x->Config.PlaceHolder == TRUE) && \
(x->Config.Current.VendorID == 0xAAAA) && \
(x->Config.Current.DeviceID == 0xBBBB))
typedef struct _SOFTPCI_DEVICE *PSOFTPCI_DEVICE;
typedef union _SOFTPCI_SLOT{
struct{
UCHAR Function;
UCHAR Device;
};
USHORT AsUSHORT;
} SOFTPCI_SLOT, *PSOFTPCI_SLOT;
typedef enum _SOFTPCI_READWRITE_CONFIG{
Unsupported = 0,
SoftPciReadConfig,
SoftPciWriteConfig
} SOFTPCI_READWRITE_CONFIG;
typedef struct _SOFTPCI_RW_CONTEXT{
SOFTPCI_READWRITE_CONFIG WriteConfig;
ULONG Bus;
SOFTPCI_SLOT Slot;
ULONG Offset;
PVOID Data;
} SOFTPCI_RW_CONTEXT, *PSOFTPCI_RW_CONTEXT;
typedef enum
{
TYPE_UNKNOWN = -1,
TYPE_DEVICE,
TYPE_PCI_BRIDGE,
TYPE_HOTPLUG_BRIDGE,
TYPE_CARDBUS_DEVICE,
TYPE_CARDBUS_BRIDGE,
TYPE_UNSUPPORTED
} SOFTPCI_DEV_TYPE;
typedef struct _SOFTPCI_CONFIG{
BOOLEAN PlaceHolder; // True if this device is a bridge place holder
// to keep our view of PCI matching with
// the actual hardware.
PCI_COMMON_CONFIG Current; // Current configspace
PCI_COMMON_CONFIG Mask; // Configspace Mask
PCI_COMMON_CONFIG Default; // Default configspace
} SOFTPCI_CONFIG, *PSOFTPCI_CONFIG;
typedef struct _SOFTPCI_DEVICE{
PSOFTPCI_DEVICE Parent;
PSOFTPCI_DEVICE Sibling;
PSOFTPCI_DEVICE Child;
SOFTPCI_DEV_TYPE DevType;
UCHAR Bus;
SOFTPCI_SLOT Slot;
SOFTPCI_CONFIG Config; // Config space buffers
} SOFTPCI_DEVICE;
typedef struct _SOFTPCI_SCRIPT_DEVICE{
SINGLE_LIST_ENTRY ListEntry;
BOOLEAN SlotSpecified;
SOFTPCI_DEVICE SoftPciDevice;
ULONG ParentPathLength;
WCHAR ParentPath[1]; //variable length path
} SOFTPCI_SCRIPT_DEVICE, *PSOFTPCI_SCRIPT_DEVICE;
//
// Cardbus has extra configuration information beyond the common
// header. (stolen from the PCI driver)
//
typedef struct _PCI_TYPE2_HEADER_EXTRAS {
USHORT SubVendorID;
USHORT SubSystemID;
ULONG LegacyModeBaseAddress;
} PCI_TYPE2_HEADER_EXTRAS, *PPCI_TYPE2_HEADER_EXTRAS;
#endif