74 InterruptResource =
NULL;
115 switch (Partial->
Type)
145 ResourceArray[BarIndex++] = *Partial;
154 InterruptResource = Partial;
187 DPRINT1(
"PCIX - ignoring device-private data type %u\n",
204 FullList = (
PVOID)Partial;
208 if (!PciResources)
return FALSE;
218 CurrentDescriptor = &PciResources->
Current[
i];
219 Partial = &ResourceArray[
i];
222 if ((Partial->
Type != CurrentDescriptor->
Type) ||
224 ((Partial->
u.
Generic.Start.QuadPart !=
225 CurrentDescriptor->
u.
Generic.Start.QuadPart) ||
242 DbgPrint(
" Previously unset range\n");
250 CurrentDescriptor->
Type = Partial->
Type;
258 return ((RangeChange) || (
PdoExtension->UpdateHardware));
285 sizeof(PciData->Command));
393 BOOLEAN HaveVga, HaveMemSpace, HaveIoSpace;
394 USHORT BridgeControl, PciCommand;
421 for (
i = 0;
i < 7;
i++)
424 Partial = &PciResources->
Current[
i];
436 if ((
PdoExtension->InterruptPin) && ((HaveMemSpace) || (HaveIoSpace)))
459 if (HaveMemSpace)
Count++;
460 if (HaveIoSpace)
Count += 2;
477 for (
i = 0;
i < 7;
i++)
480 Partial = &PciResources->
Current[
i];
499 Resource->u.Generic.Start.HighPart = 0;
501 Resource->u.Generic.Start.LowPart = 0xA0000;
502 Resource->u.Generic.Length = 0x20000;
512 Resource->u.Port.Start.QuadPart = 0x3B0u;
519 Resource->u.Port.Start.QuadPart = 0x3C0u;
526 if ((
PdoExtension->InterruptPin) && ((HaveMemSpace) || (HaveIoSpace)))
539 Resource->u.Interrupt.Affinity = -1;
540 Resource->u.Interrupt.Level = InterruptLine;
541 Resource->u.Interrupt.Vector = InterruptLine;
568 DeviceRelations->
Count = 1;
573 *pDeviceRelations = DeviceRelations;
585PciGatherOtherFunctions(
620 ULONG OldCount = OldRelations ? OldRelations->
Count : 0;
633 (OldCount + FunctionCount) *
sizeof(*NewRelations->
Objects),
644 OldCount *
sizeof(*OldRelations->
Objects));
648 NewRelations->
Count = OldCount +
650 ASSERT(NewRelations->
Count == OldCount + FunctionCount);
651 *pDeviceRelations = NewRelations;
677 return (
Limit->u.Generic.Length != 0);
814 DPRINT1(
"PCIX - build resource reqs - early out, 0 resources\n");
896 if ((PciHeader.VendorID == 0xE11) &&
897 (PciHeader.DeviceID == 0xA0F7) &&
898 (PciHeader.RevisionID == 17) &&
902 DPRINT1(
"PCIX - Compaq hotplug controller PDO ext 0x%p has an unhandled PAE quirk\n",
910 DPRINT(
"PCIX - Returning NULL requirements list\n");
945 UCHAR MasterMode, SlaveMode, MasterFixed, SlaveFixed, ProgIf, NewProgIf;
953 ProgIf = PciData->ProgIf;
954 MasterMode = (ProgIf & 1) == 1;
955 MasterFixed = (ProgIf & 2) == 0;
956 SlaveMode = (ProgIf & 4) == 4;
957 SlaveFixed = (ProgIf & 8) == 0;
969 if ((MasterMode != SlaveMode) || (MasterFixed != SlaveFixed))
972 DPRINT1(
"PCIX - Warning unsupported IDE controller configuration for VEN_%04x&DEV_%04x!",
979 if ((MasterMode) && (SlaveMode))
982 if ((Initial) || (
PdoExtension->IoSpaceUnderNativeIdeControl))
991 Command &= ~PCI_ENABLE_IO_SPACE;
1006 else if (!(MasterFixed) &&
1021 ProgIf = PciData->ProgIf | 5;
1032 if (NewProgIf == ProgIf)
1035 PciData->ProgIf = ProgIf;
1039 PciData->u.type0.BaseAddresses[0] = 0;
1040 PciData->u.type0.BaseAddresses[1] = 0;
1041 PciData->u.type0.BaseAddresses[2] = 0;
1042 PciData->u.type0.BaseAddresses[3] = 0;
1044 PciData->u.type0.BaseAddresses,
1046 u.type0.BaseAddresses),
1051 PciData->u.type0.BaseAddresses,
1053 u.type0.BaseAddresses),
1058 &PciData->u.type0.InterruptPin,
1060 u.type0.InterruptPin),
1069 DPRINT1(
"PCIX - Warning failed switch to native mode for IDE controller VEN_%04x&DEV_%04x!",
1087 ULONG LegacyBaseAddress;
1094 switch (OperationType)
1107 if ((PciData->VendorID == 0x8086) &&
1108 ((PciData->DeviceID == 0x482) || (PciData->DeviceID == 0x484)))
1111 PciData->SubClass = PciData->DeviceID == 0x482 ?
1144 if ((PciData->VendorID == 0x1045) && (PciData->DeviceID != 0xC621))
1147 PciData->ProgIf &= ~5;
1148 PciData->u.type0.InterruptPin = 0;
1206 if ((PciData->ProgIf & 5) != 5)
1209 PciData->u.type0.InterruptPin = 0;
1216 !(DeviceExtension->BrokenVideoHackApplied))
1223 if ((PciData->VendorID == 0xE11) &&
1224 (PciData->DeviceID == 0xA0F7) &&
1225 (PciData->RevisionID == 17) &&
1296 PciData->u.type1.MemoryBase = 0xFFFF;
1297 PciData->u.type1.PrefetchBase = 0xFFFF;
1298 PciData->u.type1.IOBase = 0xFF;
1299 PciData->u.type1.IOLimit = 0;
1300 PciData->u.type1.MemoryLimit = 0;
1301 PciData->u.type1.PrefetchLimit = 0;
1302 PciData->u.type1.PrefetchBaseUpper32 = 0;
1303 PciData->u.type1.PrefetchLimitUpper32 = 0;
1304 PciData->u.type1.IOBaseUpper16 = 0;
1305 PciData->u.type1.IOLimitUpper16 = 0;
1323 LegacyBaseAddress = 0;
1336 BOOLEAN IdMatch, RevMatch, SubsysMatch;
1340 IdMatch = (PciData->VendorID == DeviceExtension->VendorId) &&
1341 (PciData->DeviceID == DeviceExtension->DeviceId);
1342 if (!IdMatch)
return FALSE;
1346 (PciData->RevisionID == DeviceExtension->RevisionId);
1347 if (!RevMatch)
return FALSE;
1358 ((DeviceExtension->SubsystemVendorId ==
1359 PciData->u.type0.SubVendorID) &&
1360 (DeviceExtension->SubsystemId ==
1361 PciData->u.type0.SubSystemID));
1382 (Slot.u.bits.DeviceNumber >= 16))
1385 DPRINT1(
" Device (Ven %04x Dev %04x (d=0x%x, f=0x%x)) is a ghost.\n",
1388 Slot.u.bits.DeviceNumber,
1389 Slot.u.bits.FunctionNumber);
1401 ASSERTMSG(
"PCI Skip Function - Operation type unknown.\n",
FALSE);
1415 DPRINT1(
" Vendor %04x, Device %04x has class code of PCI_CLASS_NOT_DEFINED\n",
1427 if ((PciData->VendorID == 0x8086) && (PciData->DeviceID == 8))
break;
1435 DPRINT1(
" Device skipped (not enumerated).\n");
1444 ULONG HeaderType, CapPtr, TargetAgpCapabilityId;
1467 CapPtr = PciData->u.type2.CapabilitiesPtr;
1473 CapPtr = PciData->u.type0.CapabilitiesPtr;
1485 DPRINT1(
"PCIX - Device has capabilities at: %lx\n", CapPtr);
1500 TargetAgpCapabilityId,
1505 DPRINT1(
"PCIX - AGP ID: %lx\n", TargetAgpCapabilityId);
1506 PdoExtension->TargetAgpCapabilityId = TargetAgpCapabilityId;
1521 DPRINT1(
"PCIX - No PM caps, disabling PM\n");
1546 DPRINT1(
"PCIX - PM Caps Found! Wake Level: %d Power State: %d\n",
1547 WakeLevel,
PdoExtension->PowerState.CurrentDeviceState);
1568 DPRINT1(
"PCIX - PM is off, so assumed device is: %d based on enables\n",
1599 Current->Command =
Context->Command;
1610 Current->Status =
Context->Status;
1634 Context->Status = Current->Status;
1635 Context->Command = Current->Command;
1638 Current->Status = 0;
1648 Context->Configurator = Configurator;
1707 DPRINT1(
"PCIX - CFG space write verify failed at offset 0x%x\n",
Offset);
1741 if (IoDescriptor == &
PdoExtension->Resources->Limit[0])
1827 if (!ParentDecodesIsa)
1829 for (
PdoExtension = DeviceExtension->ChildBridgePdoList;
1842 if (ParentDecodesIsa || VgaDecoder)
1844 for (
PdoExtension = DeviceExtension->ChildBridgePdoList;
1851 DPRINT1(
"PCIX - bridge PDO ext 0x%p needs the ISA bit, which is not applied\n",
1860 for (
PdoExtension = DeviceExtension->ChildBridgePdoList;
1867 DPRINT1(
"PCIX - bridge PDO ext 0x%p has no bus numbers assigned\n",
1884 USHORT CapOffset, TempOffset;
1897 USHORT SubVendorId, SubSystemId;
1903 UCHAR BusNumbers[3];
1904 DPRINT1(
"PCIX - Scan Bus: FDO Extension @ 0x%p, Base Bus = 0x%x\n",
1905 DeviceExtension, DeviceExtension->BaseBus);
1911 PdoExtension = DeviceExtension->PhysicalDeviceObject->DeviceExtension;
1922 if (SecondaryBus != DeviceExtension->BaseBus)
1924 DPRINT1(
"PCIX - Bus numbers have been changed! Restoring originals.\n");
1927 BusNumbers[0] =
PdoExtension->ParentFdoExtension->BaseBus;
1928 BusNumbers[1] = DeviceExtension->BaseBus;
1929 BusNumbers[2] =
PdoExtension->Dependent.type1.SubordinateBus;
1933 sizeof(BusNumbers));
1939 i = DeviceExtension->BaseBus;
1940 for (
j = 0;
j < MaxDevice;
j++)
1974 DPRINT(
"PCIX - Scan Found Device 0x%x (b=0x%x, d=0x%x, f=0x%x)\n",
1986 DPRINT(
"PCIX - Device Description \"%S\".\n",
1987 DescriptionText ? DescriptionText :
L"(NULL)");
2000 DPRINT1(
"PCIX - not enumerating the ACPI watchdog device\n");
2015 SubVendorId = PciData->u.type0.SubVendorID;
2016 SubSystemId = PciData->u.type0.SubSystemID;
2024 PciData->RevisionID);
2032 DPRINT1(
"PCIX - Not allowing PM Because device is critical\n");
2050 DPRINT1(
"PCIX - Not allowing PM because device is VGA\n");
2095 NewExtension->
VendorId = PciData->VendorID;
2096 NewExtension->
DeviceId = PciData->DeviceID;
2097 NewExtension->
RevisionId = PciData->RevisionID;
2098 NewExtension->
ProgIf = PciData->ProgIf;
2099 NewExtension->
SubClass = PciData->SubClass;
2100 NewExtension->
BaseClass = PciData->BaseClass;
2117 for (BridgeExtension = &DeviceExtension->ChildBridgePdoList;
2119 BridgeExtension = &(*BridgeExtension)->
NextBridge);
2122 *BridgeExtension = NewExtension;
2136 DPRINT1(
"PCIX - Have BIOS configuration!\n");
2147 if (
BiosData->u.type0.InterruptLine !=
2148 PciData->u.type0.InterruptLine)
2154 u.type0.InterruptLine),
2197 NewExtension->
InterruptPin = PciData->u.type0.InterruptPin;
2228 if (TempOffset != CapOffset)
2231 DPRINT1(
"PCIX - Failed to read PCI capability at offset 0x%02x\n",
2233 ASSERT(TempOffset == CapOffset);
2259 Name =
"UNKNOWN CAPABILITY";
2274 if (TempOffset != CapOffset)
2277 DPRINT1(
"- Failed to read capability data. ***\n");
2278 ASSERT(TempOffset == CapOffset);
2283 DPRINT(
"PCIX - CAP @%02x ID %02x (%s)\n",
2290 CapOffset = CapHeader->
Next;
2310 ((NewExtension->
VendorId == 0x8086) &&
2311 (NewExtension->
DeviceId == 0x482)))
2318 if (!PciData->CacheLineSize)
2339 if (!(PciData->LatencyTimer) ||
2340 ((TempOffset) && (PciData->LatencyTimer == 64)))
2343 DPRINT1(
"PCIX - ScanBus, PDOx %p found unconfigured\n",
2407 DPRINT1(
"PCIX - Old device (pdox) %p not found on rescan.\n",
2418 DeviceRelations = *pDeviceRelations;
2433 NewRelations->
Count = 0;
2434 if (DeviceRelations)
2445 DPRINT(
"PCIX - QueryDeviceRelations/BusRelations FDOx %p (bus 0x%02x)\n",
2447 DeviceExtension->BaseBus);
2451 ObjectArray = &NewRelations->
Objects[NewRelations->
Count];
2455 DPRINT(
" QDR PDO %p (x %p)%s\n",
2459 "<Omitted, device flaged not present>" :
"");
2475 DPRINT(
" QDR Total PDO count = %u (%u already in list)\n",
2476 NewRelations->
Count + PdoCount,
2477 NewRelations->
Count);
2480 NewRelations->
Count += PdoCount;
2481 *pDeviceRelations = NewRelations;
2495 UCHAR NewCacheLineSize, NewLatencyTimer, CacheLineReadBack;
2560 sizeof(CacheLineReadBack));
2561 if ((CacheLineReadBack != 0) &&
2562 (CacheLineReadBack ==
PdoExtension->SavedCacheLineSize))
2568 DPRINT1(
"PCIX - pdox %p cache line size %02x rejected, MWI stays off\n",
2589 PciData.u.type0.InterruptLine =
PdoExtension->RawInterruptLine;
2594 if (PciData.LatencyTimer != NewLatencyTimer)
2597 DPRINT1(
"PCIX - pdox %p changing latency from %02x to %02x.\n",
2599 PciData.LatencyTimer,
2605 if (PciData.CacheLineSize != NewCacheLineSize)
2608 DPRINT1(
"PCIX - pdox %p changing cache line size from %02x to %02x.\n",
2610 PciData.CacheLineSize,
2615 PciData.LatencyTimer =
PdoExtension->SavedLatencyTimer;
2616 PciData.CacheLineSize =
PdoExtension->SavedCacheLineSize;
2617 PciData.u.type0.InterruptLine =
PdoExtension->RawInterruptLine;
2637 PdoExtension->RawInterruptLine = PciData.u.type0.InterruptLine;
static _Out_opt_ PULONGLONG Start
VOID NTAPI ario_ApplyBrokenVideoHack(IN PPCI_FDO_EXTENSION FdoExtension)
ULONGLONG NTAPI RtlIoDecodeMemIoResource(_In_ PIO_RESOURCE_DESCRIPTOR Descriptor, _Out_opt_ PULONGLONG Alignment, _Out_opt_ PULONGLONG MinimumAddress, _Out_opt_ PULONGLONG MaximumAddress)
ULONGLONG NTAPI RtlCmDecodeMemIoResource(_In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR Descriptor, _Out_opt_ PULONGLONG Start)
PDEVICE_OBJECT PhysicalDeviceObject
NTSTATUS NTAPI Cardbus_ChangeResourceSettings(_In_ PPCI_PDO_EXTENSION PdoExtension, _Inout_ PPCI_COMMON_HEADER PciData)
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_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 _Requires_lock_held_(lock)
#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_SaveLimits(IN PPCI_CONFIGURATOR_CONTEXT Context)
NTSTATUS NTAPI Device_ChangeResourceSettings(_In_ PPCI_PDO_EXTENSION PdoExtension, _Inout_ PPCI_COMMON_HEADER PciData)
Puts the ranges assigned to a function into its BARs and ROM BAR.
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 PciIsRequirementDescriptor(_In_ PIO_RESOURCE_DESCRIPTOR Limit)
Tells whether a discovered limit asks the arbiter for a range.
static ULONG NTAPI PciAddCurrentPlacementRequirement(_In_ PPCI_PDO_EXTENSION PdoExtension, _In_ USHORT Command, _In_ ULONG BarIndex, _Out_opt_ PIO_RESOURCE_DESCRIPTOR Descriptor)
Writes a fixed requirement for the range a BAR is decoding now.
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)
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
VOID NTAPI PciApplyResizableBarSizes(_In_ PPCI_PDO_EXTENSION PdoExtension)
Sets every resizable BAR to the length it was assigned. The memory decode has to be off,...
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)
ULONG NTAPI PciAddResizableBarRequirements(_In_ PPCI_PDO_EXTENSION PdoExtension, _In_ ULONG BarIndex, _In_ PIO_RESOURCE_DESCRIPTOR Limit, _Out_writes_opt_(2) PIO_RESOURCE_DESCRIPTOR Descriptors)
Writes the requirements for the sizes a resizable BAR can grow to. They go ahead of the default requi...
PCI_DEVICE_TYPES NTAPI PciClassifyDeviceType(IN PPCI_PDO_EXTENSION PdoExtension)
VOID NTAPI PciGetExpressCapabilities(_Inout_ PPCI_PDO_EXTENSION PdoExtension)
Records the Express capability of a new function and whether its extended configuration space can be ...
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 PciGetResizableBarCapability(_Inout_ PPCI_PDO_EXTENSION PdoExtension)
Records which BARs of a new function can be resized and the sizes each of them supports.
VOID NTAPI PPBridge_RestoreCurrent(IN PPCI_CONFIGURATOR_CONTEXT Context)
#define PCI_SKIP_RESOURCE_ENUMERATION
BOOLEAN NTAPI PciAreBusNumbersConfigured(IN PPCI_PDO_EXTENSION PdoExtension)
#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)
#define PCI_INTERRUPT_LINE_UNKNOWN
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)
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)
NTSTATUS NTAPI PPBridge_ChangeResourceSettings(_In_ PPCI_PDO_EXTENSION PdoExtension, _Inout_ PPCI_COMMON_HEADER PciData)
static const uint32_t k[]
#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)
GLuint GLuint GLsizei count
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()
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
#define ExFreePoolWithTag(_P, _T)
#define CM_RESOURCE_PORT_POSITIVE_DECODE
#define CM_RESOURCE_MEMORY_READ_WRITE
#define CM_RESOURCE_PORT_10_BIT_DECODE
#define _Out_writes_opt_(s)
#define ASSERTMSG(msg, exp)
#define UNREFERENCED_PARAMETER(P)
_In_ ULONG _In_ ULONG Offset
_In_ ULONG _In_ ULONG _In_ ULONG Length
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
_In_ ULONG _In_ PCI_SLOT_NUMBER PciSlot
#define CM_RESOURCE_INTERRUPT_MESSAGE
#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_NOT_CRITICAL_DEVICE
#define PCI_HACK_ONE_CHILD
#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_NEVER_POWER_DOWN
#define PCI_HACK_DOUBLE_DECKER
#define PCI_HACK_BROKEN_SUBTRACTIVE_DECODE
#define PCI_HACK_NO_PM_CAPS
#define PCI_HACK_KEEP_DECODES_ON_STOP
STDMETHOD() Next(THIS_ ULONG celt, IAssociationElement *pElement, ULONG *pceltFetched) PURE
CM_PARTIAL_RESOURCE_LIST PartialResourceList
union _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494 u
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494::@501 DevicePrivate
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494::@497 Interrupt
struct _CM_PARTIAL_RESOURCE_DESCRIPTOR::@494::@495 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
IO_RESOURCE_DESCRIPTOR Limit[7]
CM_PARTIAL_RESOURCE_DESCRIPTOR Current[7]
PCI_IPI_FUNCTION Function
BOOLEAN SavedCacheLineSize
BOOLEAN SavedLatencyTimer
struct _PCI_PDO_EXTENSION * NextBridge
BOOLEAN NeedsHotPlugConfiguration
BOOLEAN ExpectedWritebackFailure
UCHAR AdjustedInterruptLine
struct _PCI_SLOT_NUMBER::@5064::@5065 bits
union _PCI_SLOT_NUMBER::@5064 u
_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_ WDFDEVICE _In_ WDFDEVICE Child
_Must_inspect_result_ _In_ WDFIORESREQLIST _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFIORESLIST * ResourceList
_In_ WDFIORESREQLIST RequirementsList
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_In_ WDFIORESREQLIST _In_ ULONG SlotNumber
_Reserved_ PVOID Reserved
@ CmResourceShareDeviceExclusive
@ CmResourceShareDriverExclusive
#define CmResourceTypeMemoryLarge
#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 IO_RESOURCE_ALTERNATIVE
#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
#define PCI_ENABLE_PARITY
struct _PCI_PM_CAPABILITY PCI_PM_CAPABILITY
#define IO_RESOURCE_PREFERRED
#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_CLASS_DISPLAY_CTLR
#define PCI_CARDBUS_BRIDGE_TYPE
struct _IO_RESOURCE_REQUIREMENTS_LIST IO_RESOURCE_REQUIREMENTS_LIST
_In_ LONG _In_ LONG Limit
#define ObReferenceObject
NTSYSAPI NTSTATUS NTAPI RtlIoEncodeMemIoResource(_In_ struct _IO_RESOURCE_DESCRIPTOR *Descriptor, _In_ UCHAR Type, _In_ ULONGLONG Length, _In_ ULONGLONG Alignment, _In_ ULONGLONG MinimumAddress, _In_ ULONGLONG MaximumAddress)