63 BOOLEAN DrainPartial, RangeChange;
73 InterruptResource =
NULL;
110 switch (Partial->
Type)
127 BaseResource = Partial;
136 InterruptResource = Partial;
185 FullList = (
PVOID)Partial;
190 if (!PciResources)
return FALSE;
194 DPRINT1(
"Missing sanity checking code!\n");
197 for (
i = 0;
i < 7;
i++)
200 CurrentDescriptor = &PciResources->
Current[
i];
201 Partial = &ResourceArray[
i];
204 PreviousDescriptor = &PciResources->
Current[(
i == 0) ? (0) : (
i - 1)];
207 if (((Partial->
Type != CurrentDescriptor->
Type) ||
209 ((Partial->
u.
Generic.Start.QuadPart !=
210 CurrentDescriptor->
u.
Generic.Start.QuadPart) ||
226 DbgPrint(
" Previously unset range\n");
234 CurrentDescriptor->
Type = Partial->
Type;
237 CurrentDescriptor = PreviousDescriptor;
242 return ((RangeChange) || (
PdoExtension->UpdateHardware));
367 BOOLEAN HaveVga, HaveMemSpace, HaveIoSpace;
368 USHORT BridgeControl, PciCommand;
395 for (
i = 0;
i < 7;
i++)
398 Partial = &PciResources->
Current[
i];
408 if ((
PdoExtension->InterruptPin) && ((HaveMemSpace) || (HaveIoSpace)))
412 if ((InterruptLine) && (InterruptLine != -1))
Count++;
429 if (HaveMemSpace)
Count++;
430 if (HaveIoSpace)
Count += 2;
447 for (
i = 0;
i < 7;
i++)
450 Partial = &PciResources->
Current[
i];
467 Resource->u.Generic.Start.HighPart = 0;
469 Resource->u.Generic.Start.LowPart = 0xA0000;
470 Resource->u.Generic.Length = 0x20000;
480 Resource->u.Port.Start.QuadPart = 0x3B0u;
487 Resource->u.Port.Start.QuadPart = 0x3C0u;
494 if ((
PdoExtension->InterruptPin) && ((HaveMemSpace) || (HaveIoSpace)))
498 if ((InterruptLine) && (InterruptLine != -1))
507 Resource->u.Interrupt.Affinity = -1;
508 Resource->u.Interrupt.Level = InterruptLine;
509 Resource->u.Interrupt.Vector = InterruptLine;
536 DeviceRelations->
Count = 1;
541 *pDeviceRelations = DeviceRelations;
584 DPRINT1(
"PCI - build resource reqs - early out, 0 resources\n");
610 if ((PciHeader.VendorID == 0xE11) &&
611 (PciHeader.DeviceID == 0xA0F7) &&
612 (PciHeader.RevisionID == 17) &&
624 DPRINT1(
"Returning NULL requirements list\n");
635 DPRINT1(
"PciQueryRequirements returning NULL requirements list\n");
667 UCHAR MasterMode, SlaveMode, MasterFixed, SlaveFixed, ProgIf, NewProgIf;
675 ProgIf = PciData->ProgIf;
676 MasterMode = (ProgIf & 1) == 1;
677 MasterFixed = (ProgIf & 2) == 0;
678 SlaveMode = (ProgIf & 4) == 4;
679 SlaveFixed = (ProgIf & 8) == 0;
691 if ((MasterMode != SlaveMode) || (MasterFixed != SlaveFixed))
694 DPRINT1(
"PCI: Warning unsupported IDE controller configuration for VEN_%04x&DEV_%04x!",
701 if ((MasterMode) && (SlaveMode))
704 if ((Initial) || (
PdoExtension->IoSpaceUnderNativeIdeControl))
713 Command &= ~PCI_ENABLE_IO_SPACE;
728 else if (!(MasterFixed) &&
743 ProgIf = PciData->ProgIf | 5;
754 if (NewProgIf == ProgIf)
757 PciData->ProgIf = ProgIf;
761 PciData->u.type0.BaseAddresses[0] = 0;
762 PciData->u.type0.BaseAddresses[1] = 0;
763 PciData->u.type0.BaseAddresses[2] = 0;
764 PciData->u.type0.BaseAddresses[3] = 0;
766 PciData->u.type0.BaseAddresses,
768 u.type0.BaseAddresses),
773 PciData->u.type0.BaseAddresses,
775 u.type0.BaseAddresses),
780 &PciData->u.type0.InterruptPin,
782 u.type0.InterruptPin),
791 DPRINT1(
"PCI: Warning failed switch to native mode for IDE controller VEN_%04x&DEV_%04x!",
809 ULONG LegacyBaseAddress;
816 switch (OperationType)
829 if ((PciData->VendorID == 0x8086) &&
830 ((PciData->DeviceID == 0x482) || (PciData->DeviceID == 0x484)))
833 PciData->SubClass = PciData->DeviceID == 0x482 ?
866 if ((PciData->VendorID == 0x1045) && (PciData->DeviceID != 0xC621))
869 PciData->ProgIf &= ~5;
870 PciData->u.type0.InterruptPin = 0;
928 if ((PciData->ProgIf & 5) != 5)
931 PciData->u.type0.InterruptPin = 0;
938 !(DeviceExtension->BrokenVideoHackApplied))
945 if ((PciData->VendorID == 0xE11) &&
946 (PciData->DeviceID == 0xA0F7) &&
947 (PciData->RevisionID == 17) &&
1035 PciData->u.type1.MemoryBase = 0xFFFF;
1036 PciData->u.type1.PrefetchBase = 0xFFFF;
1037 PciData->u.type1.IOBase = 0xFF;
1038 PciData->u.type1.IOLimit = 0;
1039 PciData->u.type1.MemoryLimit = 0;
1040 PciData->u.type1.PrefetchLimit = 0;
1041 PciData->u.type1.PrefetchBaseUpper32 = 0;
1042 PciData->u.type1.PrefetchLimitUpper32 = 0;
1043 PciData->u.type1.IOBaseUpper16 = 0;
1044 PciData->u.type1.IOLimitUpper16 = 0;
1062 LegacyBaseAddress = 0;
1075 BOOLEAN IdMatch, RevMatch, SubsysMatch;
1079 IdMatch = (PciData->VendorID == DeviceExtension->VendorId) &&
1080 (PciData->DeviceID == DeviceExtension->DeviceId);
1081 if (!IdMatch)
return FALSE;
1085 (PciData->RevisionID == DeviceExtension->RevisionId);
1086 if (!RevMatch)
return FALSE;
1097 ((DeviceExtension->SubsystemVendorId ==
1098 PciData->u.type0.SubVendorID) &&
1099 (DeviceExtension->SubsystemId ==
1100 PciData->u.type0.SubSystemID));
1121 (Slot.u.bits.DeviceNumber >= 16))
1124 DPRINT1(
" Device (Ven %04x Dev %04x (d=0x%x, f=0x%x)) is a ghost.\n",
1127 Slot.u.bits.DeviceNumber,
1128 Slot.u.bits.FunctionNumber);
1140 ASSERTMSG(
"PCI Skip Function - Operation type unknown.\n",
FALSE);
1154 DPRINT1(
" Vendor %04x, Device %04x has class code of PCI_CLASS_NOT_DEFINED\n",
1166 if ((PciData->VendorID == 0x8086) && (PciData->DeviceID == 8))
break;
1174 DPRINT1(
" Device skipped (not enumerated).\n");
1183 ULONG HeaderType, CapPtr, TargetAgpCapabilityId;
1206 CapPtr = PciData->u.type2.CapabilitiesPtr;
1212 CapPtr = PciData->u.type0.CapabilitiesPtr;
1224 DPRINT1(
"Device has capabilities at: %lx\n", CapPtr);
1239 TargetAgpCapabilityId,
1244 DPRINT1(
"AGP ID: %lx\n", TargetAgpCapabilityId);
1245 PdoExtension->TargetAgpCapabilityId = TargetAgpCapabilityId;
1260 DPRINT1(
"No PM caps, disabling PM\n");
1285 DPRINT1(
"PM Caps Found! Wake Level: %d Power State: %d\n",
1286 WakeLevel,
PdoExtension->PowerState.CurrentDeviceState);
1301 DPRINT1(
"PM is off, so assumed device is: %d based on enables\n",
1332 Current->Command =
Context->Command;
1343 Current->Status =
Context->Status;
1367 Context->Status = Current->Status;
1368 Context->Command = Current->Command;
1371 Current->Status = 0;
1381 Context->Configurator = Configurator;
1440 DPRINT1(
"PCI - CFG space write verify failed at offset 0x%x\n",
Offset);
1477 DPRINT1(
"PCI Resources fail!\n");
1557 for (
PdoExtension = DeviceExtension->ChildBridgePdoList;
1585 USHORT CapOffset, TempOffset;
1598 USHORT SubVendorId, SubSystemId;
1601 DPRINT1(
"PCI Scan Bus: FDO Extension @ 0x%p, Base Bus = 0x%x\n",
1602 DeviceExtension, DeviceExtension->BaseBus);
1608 PdoExtension = DeviceExtension->PhysicalDeviceObject->DeviceExtension;
1619 if (SecondaryBus !=
PdoExtension->Dependent.type1.SecondaryBus)
1626 PciSlot.
u.
bits.Reserved = 0;
1627 i = DeviceExtension->BaseBus;
1628 for (
j = 0;
j < MaxDevice;
j++)
1631 PciSlot.
u.
bits.DeviceNumber =
j;
1635 PciSlot.
u.
bits.FunctionNumber =
k;
1662 DPRINT1(
"Scan Found Device 0x%x (b=0x%x, d=0x%x, f=0x%x)\n",
1674 DPRINT1(
"Device Description \"%S\".\n",
1675 DescriptionText ? DescriptionText :
L"(NULL)");
1696 SubVendorId = PciData->u.type0.SubVendorID;
1697 SubSystemId = PciData->u.type0.SubSystemID;
1705 PciData->RevisionID);
1714 DPRINT1(
"Not allowing PM Because device is critical\n");
1726 DPRINT1(
"Not allowing PM because device is VGA\n");
1770 NewExtension->
VendorId = PciData->VendorID;
1771 NewExtension->
DeviceId = PciData->DeviceID;
1772 NewExtension->
RevisionId = PciData->RevisionID;
1773 NewExtension->
ProgIf = PciData->ProgIf;
1774 NewExtension->
SubClass = PciData->SubClass;
1775 NewExtension->
BaseClass = PciData->BaseClass;
1792 for (BridgeExtension = &DeviceExtension->ChildBridgePdoList;
1794 BridgeExtension = &(*BridgeExtension)->
NextBridge);
1797 *BridgeExtension = NewExtension;
1812 DPRINT1(
"Have BIOS configuration!\n");
1824 if (
BiosData->u.type0.InterruptLine !=
1825 PciData->u.type0.InterruptLine)
1831 u.type0.InterruptLine),
1874 NewExtension->
InterruptPin = PciData->u.type0.InterruptPin;
1905 if (TempOffset != CapOffset)
1908 DPRINT1(
"PCI - Failed to read PCI capability at offset 0x%02x\n",
1910 ASSERT(TempOffset == CapOffset);
1936 Name =
"UNKNOWN CAPABILITY";
1951 if (TempOffset != CapOffset)
1954 DPRINT1(
"- Failed to read capability data. ***\n");
1955 ASSERT(TempOffset == CapOffset);
1960 DPRINT1(
"CAP @%02x ID %02x (%s)\n",
1967 CapOffset = CapHeader.
Next;
1987 ((NewExtension->
VendorId == 0x8086) &&
1988 (NewExtension->
DeviceId == 0x482)))
1995 if (!PciData->CacheLineSize)
2016 if (!(PciData->LatencyTimer) ||
2017 ((TempOffset) && (PciData->LatencyTimer == 64)))
2020 DPRINT1(
"PCI - ScanBus, PDOx %p found unconfigured\n",
2084 DPRINT1(
"PCI - Old device (pdox) %p not found on rescan.\n",
2095 DeviceRelations = *pDeviceRelations;
2110 NewRelations->
Count = 0;
2111 if (DeviceRelations)
2122 DPRINT1(
"PCI QueryDeviceRelations/BusRelations FDOx %p (bus 0x%02x)\n",
2124 DeviceExtension->BaseBus);
2128 ObjectArray = &NewRelations->
Objects[NewRelations->
Count];
2132 DPRINT1(
" QDR PDO %p (x %p)%s\n",
2136 "<Omitted, device flaged not present>" :
"");
2152 DPRINT1(
" QDR Total PDO count = %u (%u already in list)\n",
2153 NewRelations->
Count + PdoCount,
2154 NewRelations->
Count);
2157 NewRelations->
Count += PdoCount;
2158 *pDeviceRelations = NewRelations;
2169 UCHAR NewCacheLineSize, NewLatencyTimer;
2228 PciData.u.type0.InterruptLine =
PdoExtension->RawInterruptLine;
2233 if (PciData.LatencyTimer != NewLatencyTimer)
2236 DPRINT1(
"PCI (pdox %p) changing latency from %02x to %02x.\n",
2238 PciData.LatencyTimer,
2244 if (PciData.CacheLineSize != NewCacheLineSize)
2247 DPRINT1(
"PCI (pdox %p) changing cache line size from %02x to %02x.\n",
2249 PciData.CacheLineSize,
2254 PciData.LatencyTimer =
PdoExtension->SavedLatencyTimer;
2255 PciData.CacheLineSize =
PdoExtension->SavedCacheLineSize;
2256 PciData.u.type0.InterruptLine =
PdoExtension->RawInterruptLine;
2276 PdoExtension->RawInterruptLine = PciData.u.type0.InterruptLine;
VOID NTAPI ario_ApplyBrokenVideoHack(IN PPCI_FDO_EXTENSION FdoExtension)
PDEVICE_OBJECT PhysicalDeviceObject
VOID NTAPI Cardbus_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Cardbus_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Cardbus_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Cardbus_ChangeResourceSettings(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI Cardbus_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Cardbus_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI Cardbus_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context, IN PPCI_COMMON_HEADER PciData, IN PIO_RESOURCE_DESCRIPTOR IoDescriptor)
_Acquires_exclusive_lock_ Resource _Acquires_shared_lock_ Resource _Inout_ PERESOURCE Resource
FORCEINLINE PCM_PARTIAL_RESOURCE_DESCRIPTOR CmiGetNextPartialDescriptor(_In_ const CM_PARTIAL_RESOURCE_DESCRIPTOR *PartialDescriptor)
#define STATUS_NOT_IMPLEMENTED
#define NT_SUCCESS(StatCode)
VOID NTAPI PciDebugPrintPartialResource(IN PCM_PARTIAL_RESOURCE_DESCRIPTOR PartialResource)
VOID NTAPI PciDebugDumpCommonConfig(IN PPCI_COMMON_HEADER PciData)
VOID NTAPI PciDebugPrintIoResReqList(IN PIO_RESOURCE_REQUIREMENTS_LIST Requirements)
VOID NTAPI PciDebugPrintCmResList(IN PCM_RESOURCE_LIST PartialList)
VOID NTAPI Device_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context, IN PPCI_COMMON_HEADER PciData, IN PIO_RESOURCE_DESCRIPTOR IoDescriptor)
VOID NTAPI Device_ChangeResourceSettings(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI Device_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Device_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Device_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI Device_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI Device_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI PciWriteLimitsAndRestoreCurrent(IN PVOID Reserved, IN PVOID Context2)
VOID NTAPI PciGetEnhancedCapabilities(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
NTSTATUS NTAPI PciSetResources(IN PPCI_PDO_EXTENSION PdoExtension, IN BOOLEAN DoReset, IN BOOLEAN SomethingSomethingDarkSide)
BOOLEAN NTAPI PciSkipThisFunction(IN PPCI_COMMON_HEADER PciData, IN PCI_SLOT_NUMBER Slot, IN UCHAR OperationType, IN ULONGLONG HackFlags)
NTSTATUS NTAPI PciBuildRequirementsList(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData, OUT PIO_RESOURCE_REQUIREMENTS_LIST *Buffer)
PCM_RESOURCE_LIST NTAPI PciAllocateCmResourceList(IN ULONG Count, IN ULONG BusNumber)
VOID NTAPI PciProcessBus(IN PPCI_FDO_EXTENSION DeviceExtension)
BOOLEAN NTAPI PcipIsSameDevice(IN PPCI_PDO_EXTENSION DeviceExtension, IN PPCI_COMMON_HEADER PciData)
NTSTATUS NTAPI PciScanBus(IN PPCI_FDO_EXTENSION DeviceExtension)
NTSTATUS NTAPI PciQueryEjectionRelations(IN PPCI_PDO_EXTENSION PdoExtension, IN OUT PDEVICE_RELATIONS *pDeviceRelations)
NTSTATUS NTAPI PciQueryRequirements(IN PPCI_PDO_EXTENSION PdoExtension, IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *RequirementsList)
NTSTATUS NTAPI PciQueryTargetDeviceRelations(IN PPCI_PDO_EXTENSION PdoExtension, IN OUT PDEVICE_RELATIONS *pDeviceRelations)
BOOLEAN NTAPI PciConfigureIdeController(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData, IN BOOLEAN Initial)
NTSTATUS NTAPI PciQueryDeviceRelations(IN PPCI_FDO_EXTENSION DeviceExtension, IN OUT PDEVICE_RELATIONS *pDeviceRelations)
NTSTATUS NTAPI PcipGetFunctionLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
VOID NTAPI PcipUpdateHardware(IN PVOID Context, IN PVOID Context2)
PIO_RESOURCE_REQUIREMENTS_LIST PciZeroIoResourceRequirements
VOID NTAPI PciUpdateHardware(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
PIO_RESOURCE_REQUIREMENTS_LIST NTAPI PciAllocateIoRequirementsList(IN ULONG Count, IN ULONG BusNumber, IN ULONG SlotNumber)
PCI_CONFIGURATOR PciConfigurators[]
VOID NTAPI PciApplyHacks(IN PPCI_FDO_EXTENSION DeviceExtension, IN PPCI_COMMON_HEADER PciData, IN PCI_SLOT_NUMBER SlotNumber, IN ULONG OperationType, PPCI_PDO_EXTENSION PdoExtension)
BOOLEAN NTAPI PciComputeNewCurrentSettings(IN PPCI_PDO_EXTENSION PdoExtension, IN PCM_RESOURCE_LIST ResourceList)
NTSTATUS NTAPI PciGetFunctionLimits(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER Current, IN ULONGLONG HackFlags)
NTSTATUS NTAPI PciQueryResources(IN PPCI_PDO_EXTENSION PdoExtension, OUT PCM_RESOURCE_LIST *Buffer)
BOOLEAN PciEnableNativeModeATA
VOID NTAPI PciReadSlotConfig(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_SLOT_NUMBER Slot, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
NTSYSAPI BOOLEAN InitSafeBootMode
VOID NTAPI PPBridge_SaveCurrentSettings(IN PPCI_CONFIGURATOR_CONTEXT Context)
NTSTATUS NTAPI PciPdoCreate(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_SLOT_NUMBER Slot, OUT PDEVICE_OBJECT *PdoDeviceObject)
VOID NTAPI PciWriteDeviceConfig(IN PPCI_PDO_EXTENSION DeviceExtension, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
VOID NTAPI PPBridge_GetAdditionalResourceDescriptors(IN PPCI_CONFIGURATOR_CONTEXT Context, IN PPCI_COMMON_HEADER PciData, IN PIO_RESOURCE_DESCRIPTOR IoDescriptor)
@ PciSynchronizedOperation
PWCHAR NTAPI PciGetDeviceDescriptionMessage(IN UCHAR BaseClass, IN UCHAR SubClass)
BOOLEAN NTAPI PciIsSlotPresentInParentMethod(IN PPCI_PDO_EXTENSION PdoExtension, IN ULONG Method)
BOOLEAN PciAssignBusNumbers
struct _PCI_PDO_EXTENSION * PPCI_PDO_EXTENSION
NTSTATUS NTAPI PciCancelStateTransition(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_STATE NewState)
PCI_DEVICE_TYPES NTAPI PciClassifyDeviceType(IN PPCI_PDO_EXTENSION PdoExtension)
NTSTATUS NTAPI PciBeginStateTransition(IN PPCI_FDO_EXTENSION DeviceExtension, IN PCI_STATE NewState)
NTSTATUS NTAPI PciGetBiosConfig(IN PPCI_PDO_EXTENSION DeviceExtension, OUT PPCI_COMMON_HEADER PciData)
VOID NTAPI PPBridge_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context)
#define PCI_SKIP_RESOURCE_ENUMERATION
#define PCI_HACK_FIXUP_BEFORE_UPDATE
PPCI_PDO_EXTENSION NTAPI PciFindPdoByFunction(IN PPCI_FDO_EXTENSION DeviceExtension, IN ULONG FunctionNumber, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI PPBridge_MassageHeaderForLimitsDetermination(IN PPCI_CONFIGURATOR_CONTEXT Context)
BOOLEAN NTAPI PciIsDeviceOnDebugPath(IN PPCI_PDO_EXTENSION DeviceExtension)
#define PCI_IS_ROOT_FDO(x)
VOID NTAPI PciDecodeEnable(IN PPCI_PDO_EXTENSION PdoExtension, IN BOOLEAN Enable, OUT PUSHORT Command)
BOOLEAN NTAPI PciIsCriticalDeviceClass(IN UCHAR BaseClass, IN UCHAR SubClass)
UCHAR NTAPI PciReadDeviceCapability(IN PPCI_PDO_EXTENSION DeviceExtension, IN UCHAR Offset, IN ULONG CapabilityId, OUT PPCI_CAPABILITIES_HEADER Buffer, IN ULONG Length)
NTSTATUS NTAPI PciSetPowerManagedDevicePowerState(IN PPCI_PDO_EXTENSION DeviceExtension, IN DEVICE_POWER_STATE DeviceState, IN BOOLEAN IrpSet)
ULONGLONG NTAPI PciGetHackFlags(IN USHORT VendorId, IN USHORT DeviceId, IN USHORT SubVendorId, IN USHORT SubSystemId, IN UCHAR RevisionId)
VOID NTAPI PPBridge_ChangeResourceSettings(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
NTSTATUS NTAPI PciSaveBiosConfig(IN PPCI_PDO_EXTENSION DeviceExtension, OUT PPCI_COMMON_HEADER PciData)
UCHAR NTAPI PciGetAdjustedInterruptLine(IN PPCI_PDO_EXTENSION PdoExtension)
VOID NTAPI PPBridge_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
#define PCI_HACK_FIXUP_AFTER_CONFIGURATION
#define PCI_SKIP_DEVICE_ENUMERATION
KIPI_BROADCAST_WORKER PciExecuteCriticalSystemRoutine
#define PCI_HACK_FIXUP_BEFORE_CONFIGURATION
VOID NTAPI PPBridge_ResetDevice(IN PPCI_PDO_EXTENSION PdoExtension, IN PPCI_COMMON_HEADER PciData)
VOID NTAPI PciReadDeviceConfig(IN PPCI_PDO_EXTENSION DeviceExtension, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
#define UNIMPLEMENTED_DBGBREAK(...)
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define RtlCompareMemory(s1, s2, l)
struct _DEVICE_OBJECT * PDEVICE_OBJECT
#define KeSetEvent(pEvt, foo, foo2)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint GLint GLint j
NTSTATUS NTAPI KdDisableDebugger(VOID)
NTSTATUS NTAPI KdEnableDebugger(VOID)
#define KeLeaveCriticalRegion()
#define KeEnterCriticalRegion()
#define ExFreePoolWithTag(_P, _T)
#define CM_RESOURCE_PORT_POSITIVE_DECODE
#define CM_RESOURCE_MEMORY_READ_WRITE
#define CM_RESOURCE_PORT_10_BIT_DECODE
#define ASSERTMSG(msg, exp)
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG Offset
BOOLEAN NTAPI ExIsProcessorFeaturePresent(IN ULONG ProcessorFeature)
ULONG_PTR NTAPI KeIpiGenericCall(_In_ PKIPI_BROADCAST_WORKER Function, _In_ ULONG_PTR Argument)
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
#define STATUS_DEVICE_DOES_NOT_EXIST
#define CmResourceTypeNull
struct _CM_RESOURCE_LIST CM_RESOURCE_LIST
#define CmResourceTypeMemory
#define CM_RESOURCE_INTERRUPT_LEVEL_SENSITIVE
#define CmResourceTypeDevicePrivate
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR CM_PARTIAL_RESOURCE_DESCRIPTOR
#define CmResourceTypePort
#define CmResourceTypeInterrupt
struct _IO_RESOURCE_DESCRIPTOR IO_RESOURCE_DESCRIPTOR
#define PCI_HACK_PRESERVE_COMMAND
#define PCI_HACK_CRITICAL_DEVICE
#define PCI_ENABLE_BRIDGE_VGA
#define PCI_HACK_ENUM_NO_RESOURCE
#define PCI_HACK_NO_REVISION_AFTER_D3
#define PCI_HACK_ONE_CHILD
#define PCI_HACK_DONT_DISABLE_DECODES
#define PCI_HACK_NO_SUBSYSTEM_AFTER_D3
#define PCI_HACK_NO_SUBSYSTEM
#define PCI_HACK_FAKE_CLASS_CODE
#define PCI_HACK_VIDEO_LEGACY_DECODE
#define PCI_HACK_NO_ENUM_AT_ALL
#define PCI_HACK_DISABLE_IDE_NATIVE_MODE
#define PCI_HACK_DOUBLE_DECKER
#define PCI_HACK_BROKEN_SUBTRACTIVE_DECODE
#define PCI_HACK_NO_PM_CAPS
CM_PARTIAL_RESOURCE_LIST PartialResourceList
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@384::@387 Interrupt
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@384 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@384::@391 DevicePrivate
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@384::@385 Generic
CM_PARTIAL_RESOURCE_DESCRIPTOR PartialDescriptors[1]
PDEVICE_OBJECT Objects[1]
PCI_CONFIGURATOR_CHANGE_RESOURCE_SETTINGS ChangeResourceSettings
PCI_CONFIGURATOR_SAVE_LIMITS SaveLimits
PCI_CONFIGURATOR_RESET_DEVICE ResetDevice
PCI_CONFIGURATOR_INITIALIZE Initialize
PCI_CONFIGURATOR_SAVE_CURRENT_SETTINGS SaveCurrentSettings
CM_PARTIAL_RESOURCE_DESCRIPTOR Current[7]
PCI_IPI_FUNCTION Function
BOOLEAN AdjustedInterruptLine
BOOLEAN SavedCacheLineSize
BOOLEAN SavedLatencyTimer
struct _PCI_PDO_EXTENSION * NextBridge
BOOLEAN NeedsHotPlugConfiguration
BOOLEAN ExpectedWritebackFailure
union _PCI_SLOT_NUMBER::@4359 u
struct _PCI_SLOT_NUMBER::@4359::@4360 bits
_In_ PNET_PNP_EVENT _In_ PTDI_PNP_CONTEXT _In_ PTDI_PNP_CONTEXT Context2
#define FIELD_OFFSET(t, f)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ WDFDEVICE _In_ PWDF_DEVICE_POWER_CAPABILITIES PowerCapabilities
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
_In_ WDFIORESREQLIST RequirementsList
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
_Reserved_ PVOID Reserved
@ CmResourceShareDeviceExclusive
@ CmResourceShareDriverExclusive
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE _In_ ULONG BusNumber
#define PCI_INVALID_VENDORID
#define PCI_CAPABILITY_ID_AGP
#define PCI_CAPABILITY_ID_PCIX
#define PCI_ENABLE_BUS_MASTER
#define PCI_ENABLE_WRITE_AND_INVALIDATE
#define PCI_SUBCLASS_BR_EISA
#define PCI_SUBCLASS_BR_HOST
#define PCI_TYPE0_ADDRESSES
#define PCI_ENABLE_IO_SPACE
#define PCI_SUBCLASS_BR_PCI_TO_PCI
#define PCI_CLASS_MASS_STORAGE_CTLR
struct _PCI_AGP_CAPABILITY PCI_AGP_CAPABILITY
#define PCI_SUBCLASS_SYS_OTHER
#define PCI_CONFIGURATION_TYPE(PciData)
#define PCI_SUBCLASS_MSC_IDE_CTLR
#define PCI_ENABLE_MEMORY_SPACE
#define PCI_SUBCLASS_BR_MCA
struct _PCI_PM_CAPABILITY PCI_PM_CAPABILITY
#define PCI_COMMON_HDR_LENGTH
#define PCI_SUBCLASS_BR_ISA
#define PCI_CLASS_BRIDGE_DEV
#define PCI_SUBCLASS_BR_CARDBUS
#define PCI_STATUS_CAPABILITIES_LIST
#define PCI_CAPABILITY_ID_POWER_MANAGEMENT
#define PCI_CLASS_NOT_DEFINED
#define PCI_CLASS_BASE_SYSTEM_DEV
#define PCI_CAPABILITY_ID_AGP_TARGET
#define PCI_MULTIFUNCTION_DEVICE(PciData)
#define PCI_CARDBUS_BRIDGE_TYPE
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST
#define ObReferenceObject