BOOLEAN MovedDevice;
BOOLEAN DisablePowerDown;
BOOLEAN NeedsHotPlugConfiguration;
- BOOLEAN SwitchedIDEToNativeMode;
+ BOOLEAN IDEInNativeMode;
BOOLEAN BIOSAllowsIDESwitchToNativeMode;
BOOLEAN IoSpaceUnderNativeIdeControl;
BOOLEAN OnDebugPath;
+ BOOLEAN IoSpaceNotRequired;
PCI_POWER_STATE PowerState;
PCI_HEADER_TYPE_DEPENDENT Dependent;
ULONGLONG HackFlags;
);
typedef VOID (NTAPI *PCI_CONFIGURATOR_CHANGE_RESOURCE_SETTINGS)(
- IN struct _PCI_CONFIGURATOR_CONTEXT* Context
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN PPCI_COMMON_HEADER PciData
);
typedef VOID (NTAPI *PCI_CONFIGURATOR_GET_ADDITIONAL_RESOURCE_DESCRIPTORS)(
);
typedef VOID (NTAPI *PCI_CONFIGURATOR_RESET_DEVICE)(
- IN struct _PCI_CONFIGURATOR_CONTEXT* Context
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN PPCI_COMMON_HEADER PciData
);
//
//
typedef VOID (NTAPI *PCI_IPI_FUNCTION)(
IN PVOID Reserved,
- IN PPCI_CONFIGURATOR_CONTEXT Context
+ IN PVOID Context
);
//
{
LONG RunCount;
ULONG Barrier;
- PPCI_PDO_EXTENSION PdoExtension;
+ PVOID DeviceExtension;
PCI_IPI_FUNCTION Function;
PVOID Context;
} PCI_IPI_CONTEXT, *PPCI_IPI_CONTEXT;
+//
+// PCI Legacy Device Location Cache
+//
+typedef struct _PCI_LEGACY_DEVICE
+{
+ struct _PCI_LEGACY_DEVICE *Next;
+ PDEVICE_OBJECT DeviceObject;
+ ULONG BusNumber;
+ ULONG SlotNumber;
+ UCHAR InterruptLine;
+ UCHAR InterruptPin;
+ UCHAR BaseClass;
+ UCHAR SubClass;
+ PDEVICE_OBJECT PhysicalDeviceObject;
+ ROUTING_TOKEN RoutingToken;
+ PPCI_PDO_EXTENSION PdoExtension;
+} PCI_LEGACY_DEVICE, *PPCI_LEGACY_DEVICE;
+
//
// IRP Dispatch Routines
//
+
+DRIVER_DISPATCH PciDispatchIrp;
+
NTSTATUS
NTAPI
PciDispatchIrp(
//
// Bus FDO Routines
//
+
+DRIVER_ADD_DEVICE PciAddDevice;
+
NTSTATUS
NTAPI
PciAddDevice(
IN PPCI_PDO_EXTENSION PdoExtension
);
+KIPI_BROADCAST_WORKER PciExecuteCriticalSystemRoutine;
+
ULONG_PTR
NTAPI
PciExecuteCriticalSystemRoutine(
IN OUT PDEVICE_CAPABILITIES DeviceCapability
);
+PCM_PARTIAL_RESOURCE_DESCRIPTOR
+NTAPI
+PciNextPartialDescriptor(
+ PCM_PARTIAL_RESOURCE_DESCRIPTOR CmDescriptor
+);
+
//
// Configuration Routines
//
IN PIO_RESOURCE_REQUIREMENTS_LIST Requirements
);
+VOID
+NTAPI
+PciDebugPrintCmResList(
+ IN PCM_RESOURCE_LIST ResourceList
+);
+
+VOID
+NTAPI
+PciDebugPrintPartialResource(
+ IN PCM_PARTIAL_RESOURCE_DESCRIPTOR PartialResource
+);
+
//
// Interface Support
//
IN OUT PIO_RESOURCE_REQUIREMENTS_LIST *RequirementsList
);
+BOOLEAN
+NTAPI
+PciComputeNewCurrentSettings(
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN PCM_RESOURCE_LIST ResourceList
+);
+
+NTSTATUS
+NTAPI
+PciSetResources(
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN BOOLEAN DoReset,
+ IN BOOLEAN SomethingSomethingDarkSide
+);
+
+NTSTATUS
+NTAPI
+PciBuildRequirementsList(
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN PPCI_COMMON_HEADER PciData,
+ OUT PIO_RESOURCE_REQUIREMENTS_LIST* Buffer
+);
+
//
// Identification Functions
//
VOID
NTAPI
Cardbus_ResetDevice(
- IN PPCI_CONFIGURATOR_CONTEXT Context
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN PPCI_COMMON_HEADER PciData
);
VOID
NTAPI
Cardbus_ChangeResourceSettings(
- IN PPCI_CONFIGURATOR_CONTEXT Context
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN PPCI_COMMON_HEADER PciData
);
//
VOID
NTAPI
Device_ResetDevice(
- IN PPCI_CONFIGURATOR_CONTEXT Context
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN PPCI_COMMON_HEADER PciData
);
VOID
NTAPI
Device_ChangeResourceSettings(
- IN PPCI_CONFIGURATOR_CONTEXT Context
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN PPCI_COMMON_HEADER PciData
);
//
VOID
NTAPI
PPBridge_ResetDevice(
- IN PPCI_CONFIGURATOR_CONTEXT Context
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN PPCI_COMMON_HEADER PciData
);
VOID
NTAPI
PPBridge_ChangeResourceSettings(
- IN PPCI_CONFIGURATOR_CONTEXT Context
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ IN PPCI_COMMON_HEADER PciData
+);
+
+//
+// Bus Number Routines
+//
+BOOLEAN
+NTAPI
+PciAreBusNumbersConfigured(
+ IN PPCI_PDO_EXTENSION PdoExtension
+);
+
+//
+// Routine Interface
+//
+NTSTATUS
+NTAPI
+PciCacheLegacyDeviceRouting(
+ IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG BusNumber,
+ IN ULONG SlotNumber,
+ IN UCHAR InterruptLine,
+ IN UCHAR InterruptPin,
+ IN UCHAR BaseClass,
+ IN UCHAR SubClass,
+ IN PDEVICE_OBJECT PhysicalDeviceObject,
+ IN PPCI_PDO_EXTENSION PdoExtension,
+ OUT PDEVICE_OBJECT *pFoundDeviceObject
);
//