PCI_COMMON_CONFIG (Windows CE 5.0)
This structure describes the PCI configuration space for PCI devices.
typedef struct _PCI_COMMON_CONFIG {USHORT VendorID; USHORT DeviceID; USHORT Command; USHORT Status;UCHAR RevisionID; UCHAR ProgIf; UCHAR SubClass; UCHAR BaseClass; UCHAR CacheLineSize; UCHAR LatencyTimer; UCHAR HeaderType; UCHAR BIST; union { struct _PCI_HEADER_TYPE_0 { ULONG BaseAddresses[PCI_TYPE0_ADDRESSES]; ULONG CIS; USHORT SubVendorID;USHORT SubSystemID;ULONG ROMBaseAddress;ULONG Reserved2[2];UCHAR InterruptLine; UCHAR InterruptPin; UCHAR MinimumGrant; UCHAR MaximumLatency; } type0;struct _PCI_HEADER_TYPE_1 { ULONG BaseAddresses[PCI_TYPE1_ADDRESSES]; UCHAR PrimaryBusNumber; UCHAR SecondaryBusNumber; UCHAR SubordinateBusNumber;UCHAR SecondaryLatencyTimer; UCHAR IOBase; UCHAR IOLimit;USHORT SecondaryStatus; USHORT MemoryBase; USHORT MemoryLimit;USHORT PrefetchableMemoryBase; USHORT PrefetchableMemoryLimit; ULONG PrefetchableMemoryBaseUpper32;ULONG PrefetchableMemoryLimitUpper32; USHORT IOBaseUpper; USHORT IOLimitUpper;ULONG Reserved2; ULONG ExpansionROMBase; UCHAR InterruptLine;UCHAR InterruptPin; USHORT BridgeControl;} type1;struct _PCI_HEADER_TYPE_2 { ULONG BaseAddress; UCHAR CapabilitiesPtr;UCHAR Reserved2; USHORT SecondaryStatus; UCHAR PrimaryBusNumber;UCHAR CardbusBusNumber; UCHAR SubordinateBusNumber; UCHAR CardbusLatencyTimer;ULONG MemoryBase0; ULONG MemoryLimit0; ULONG MemoryBase1;ULONG MemoryLimit1; USHORT IOBase0_LO; USHORT IOBase0_HI; USHORT IOLimit0_LO;USHORT IOLimit0_HI; USHORT IOBase1_LO; USHORT IOBase1_HI;USHORT IOLimit1_LO; USHORT IOLimit1_HI; UCHAR InterruptLine;UCHAR InterruptPin; USHORT BridgeControl; USHORT SubVendorID;USHORT SubSystemID; ULONG LegacyBaseAddress; UCHAR Reserved3[56];ULONG SystemControl; UCHAR MultiMediaControl; UCHAR GeneralStatus;UCHAR Reserved4[2]; UCHAR GPIO0Control; UCHAR GPIO1Control;UCHAR GPIO2Control; UCHAR GPIO3Control; ULONG IRQMuxRouting;UCHAR RetryStatus; UCHAR CardControl; UCHAR DeviceControl;UCHAR Diagnostic;} type2;} u; UCHAR DeviceSpecific[108];} PCI_COMMON_CONFIG , *PPCI_COMMON_CONFIG;
Members
VendorID
PCI vendor identifier register.DeviceID
PCI device identifier register.Command
PCI command register.Status
PCI status register.RevisionID
PCI revision identifier register.ProgIf
PCI programming interface register.SubClass
PCI device sub-class register.BaseClass
PCI device base-class register.CacheLineSize
PCI cache line size register.LatencyTimer
PCI latency timer register.HeaderType
PCI header type register.The following table shows possible values.
Value Description 0 Indicates a typical PCI device. 1 Indicates a PCI-PCI bridge. 2 Indicates a PCI-CardBus bridge. BIST
PCI built-in self-test register.u.type0.BaseAddresses
Array of PCI base address registers. Typical PCI devices have six base address registers, PCI-to-PCI bridges have two, and PCI-to-CardBus bridges have one.u.type0.CIS
CardBus card information structure (CIS) pointer register.u.type0.SubVendorID
PCI subsystem vendor identifier register.u.type0.SubSystemID
PCI subsystem identifier register.u.type0.ROMBaseAddress
PCI ROM base address register.u.type0.Reserved2
Reserved.u.type0.InterruptLine
PCI interrupt line register.u.type0.InterruptPin
PCI interrupt pin register.u.type0.MinimumGrant
PCI minimum grant register.u.type0.MaximumLatency
PCI maximum latency register.u.type1.BaseAddress
PCI base address register.u.type1.PrimaryBusNumber
PCI primary bus number register.u.type1.SecondaryBusNumber
PCI secondary bus number register.u.type1.SubordinateBusNumber
PCI subordinate bus number.u.type1.SecondaryLatencyTimer
PCI secondary latency timer.u.type1.IOBase
Lower 8 bits of PCI I/O base address register.u.type1.IOLimit
Lower 8 bits of PCI I/O limit address register.u.type1.SecondaryStatus
PCI secondary status register.u.type1.MemoryBase
PCI memory base address register.u.type1.MemoryLimit
PCI memory limit address registeru.type1.PrefetchableMemoryBase
Lower 16 bits of PCI prefetchable memory base address register.u.type1.PrefetchableMemoryLimit
Lower 16 bits of PCI prefetchable memory limit address register.u.type1.PrefetchableMemoryBaseUpper32
Upper 32 bits of PCI prefetchable memory base address register.u.type1.PrefetchableMemoryLimitUpper32
Upper 32 bits of PCI prefetchable memory limit address register.u.type1.IOBaseUpper
Upper 16 bits of PCI I/O base address register.u.type1.IOLimitUpper
Upper 16 bits of PCI I/O limit address register.u.type1.Reserved2
Reserved.u.type1.ExpansionROMBase
PCI expansion ROM base address register.u.type1.InterruptLine
PCI interrupt line register.u.type1.InterruptPin
PCI interrupt pin register.u.type1.BridgeControl
PCI bridge control register.u.type1.BaseAddress
PCI base address register.u.type2.CapabilitiesPtr
PCI capabilities pointer register.u.type2.Reserved2
Reserved.u.type2.PrimaryBusNumber
PCI primary bus number register.u.type2.SecondaryStatus
PCI secondary status register.u.type2.CardbusBusNumber
CardBus bus number register.u.type2.SubordinateBusNumber
PCI subordinate bus number.u.type2.CardbusLatencyTimer
CardBus latency timer register.u.type2.MemoryBase0
CardBus memory base address register 0.u.type2.MemoryLimit0
CardBus memory limit address register 0.u.type2.MemoryBase1
CardBus memory base address register 1.u.type2.MemoryLimit1
CardBus memory limit address register 1.u.type2.IOBase0_LO
Lower 16 bits of CardBus I/O base address register 0.u.type2.IOBase0_HI
Upper 16 bits of CardBus I/O base address register 0.u.type2.IOLimit0_LO
Lower 16 bits of CardBus I/O limit address register 0.u.type2.IOLimit0_HI
Upper 16 bits of CardBus I/O limit address register 0.u.type2.IOBase1_LO
Lower 16 bits of CardBus I/O base address register 1.u.type2.IOBase1_HI
Upper 16 bits of CardBus I/O base address register 1.u.type2.IOLimit1_LO
Lower 16 bits of CardBus I/O limit address register 1.u.type2.IOLimit1_HI
Upper 16 bits of CardBus I/O limit address register 1.u.type2.InterruptLine
PCI interrupt line register.u.type2.InterruptPin
PCI interrupt pin register.u.type2.BridgeControl
PCI bridge control register.u.type2.SubVendorID
PCI subsystem vendor identifier register.u.type2.SubSystemID
PCI subsystem identifier register.u.type2.LegacyBaseAddress
CardBus legacy base address register.u.type2.Reserved3
Reserved.u.type2.SystemControl
CardBus system control register.u.type2.MultiMediaControl
CardBus multimedia control register.u.type2.GeneralStatus
CardBus general status register.u.type2.Reserved4
Reserved.u.type2.GPIO0Control
CardBus GPIO control registers.u.type2.GPIO1Control
CardBus GPIO control registers.u.type2.GPIO2Control
CardBus GPIO control registers.u.type2.GPIO3Control
CardBus GPIO control registers.u.type2.IRQMuxRouting
CardBus IRQ multiplexer routing register.u.type2.RetryStatus
CardBus retry status register.u.type2.CardControl
CardBus card control register.u.type2.DeviceControl
CardBus device control register.u.type2.Diagnostic
CardBus diagnostic register.DeviceSpecific
Device specific registers in the PCI configuration space, varies by device.
Remarks
All PCI devices have a common set of registers that include VendorID, DeviceID, and so on.
This structure differs for these PCI devices: header type 0 for devices, header type 1 for PCI-to-PCI bridges, and header type 2 for PCI-to-CardBus bridges. For more information, see the PCI Local Bus Specification, revision 2.1 or 2.2.
Requirements
OS Versions: Windows CE .NET 4.0 and later.
Header: Ceddk.h.
Send Feedback on this topic to the authors