diff --git a/reactos/drivers/bus/pci/fdo.c b/reactos/drivers/bus/pci/fdo.c index ce76ced9365..790827a8476 100644 --- a/reactos/drivers/bus/pci/fdo.c +++ b/reactos/drivers/bus/pci/fdo.c @@ -1,4 +1,4 @@ -/* $Id: fdo.c,v 1.6 2004/03/12 19:40:05 navaraf Exp $ +/* $Id: fdo.c,v 1.7 2004/03/14 17:10:43 navaraf Exp $ * * PROJECT: ReactOS PCI bus driver * FILE: fdo.c @@ -13,7 +13,7 @@ #include "pcidef.h" #include "pci.h" -//#define NDEBUG +#define NDEBUG #include /*** PRIVATE *****************************************************************/ @@ -249,6 +249,11 @@ FdoQueryBusRelations( PdoDeviceExtension->BusNumber = Device->BusNumber; + RtlCopyMemory( + &PdoDeviceExtension->SlotNumber, + &Device->SlotNumber, + sizeof(PCI_SLOT_NUMBER)); + /* FIXME: Get device properties (Hardware IDs, etc.) */ swprintf( diff --git a/reactos/drivers/bus/pci/pci.h b/reactos/drivers/bus/pci/pci.h index 0cab2f81df9..8a511e3bf5c 100644 --- a/reactos/drivers/bus/pci/pci.h +++ b/reactos/drivers/bus/pci/pci.h @@ -1,4 +1,4 @@ -/* $Id: pci.h,v 1.5 2004/03/12 19:40:05 navaraf Exp $ */ +/* $Id: pci.h,v 1.6 2004/03/14 17:10:43 navaraf Exp $ */ #ifndef __PCI_H #define __PCI_H @@ -58,6 +58,8 @@ typedef struct _PDO_DEVICE_EXTENSION PDEVICE_OBJECT Fdo; // PCI bus number ULONG BusNumber; + // PCI slot number + PCI_SLOT_NUMBER SlotNumber; // Device ID UNICODE_STRING DeviceID; // Instance ID @@ -85,8 +87,6 @@ typedef struct _FDO_DEVICE_EXTENSION ULONG DeviceListCount; // Lock for namespace device list KSPIN_LOCK DeviceListLock; - // PCI bus number -/* ULONG BusNumber;*/ // Lower device object PDEVICE_OBJECT Ldo; } __attribute((packed)) FDO_DEVICE_EXTENSION, *PFDO_DEVICE_EXTENSION; diff --git a/reactos/drivers/bus/pci/pdo.c b/reactos/drivers/bus/pci/pdo.c index b1e980debf5..0af93348692 100644 --- a/reactos/drivers/bus/pci/pdo.c +++ b/reactos/drivers/bus/pci/pdo.c @@ -1,4 +1,4 @@ -/* $Id: pdo.c,v 1.3 2004/03/12 19:40:05 navaraf Exp $ +/* $Id: pdo.c,v 1.4 2004/03/14 17:10:43 navaraf Exp $ * * PROJECT: ReactOS PCI bus driver * FILE: pdo.c @@ -99,9 +99,30 @@ PdoQueryBusInformation( BusInformation->LegacyBusType = PCIBus; BusInformation->BusNumber = DeviceExtension->BusNumber; - return STATUS_INSUFFICIENT_RESOURCES; + return STATUS_SUCCESS; } + return STATUS_INSUFFICIENT_RESOURCES; +} + + +NTSTATUS +PdoQueryCapabilities( + IN PDEVICE_OBJECT DeviceObject, + IN PIRP Irp, + PIO_STACK_LOCATION IrpSp) +{ + PPDO_DEVICE_EXTENSION DeviceExtension; + PDEVICE_CAPABILITIES DeviceCapabilities; + + DPRINT("Called\n"); + + DeviceExtension = (PPDO_DEVICE_EXTENSION)DeviceObject->DeviceExtension; + DeviceCapabilities = IrpSp->Parameters.DeviceCapabilities.Capabilities; + + DeviceCapabilities->Address = + DeviceCapabilities->UINumber = DeviceExtension->SlotNumber.u.AsULONG; + return STATUS_SUCCESS; } @@ -176,10 +197,11 @@ PdoPnpControl( Status = PdoQueryBusInformation(DeviceObject, Irp, IrpSp); break; -#if 0 case IRP_MN_QUERY_CAPABILITIES: + Status = PdoQueryCapabilities(DeviceObject, Irp, IrpSp); break; +#if 0 case IRP_MN_QUERY_DEVICE_RELATIONS: /* FIXME: Possibly handle for RemovalRelations */ break; @@ -187,9 +209,11 @@ PdoPnpControl( case IRP_MN_QUERY_DEVICE_TEXT: break; #endif + case IRP_MN_QUERY_ID: Status = PdoQueryId(DeviceObject, Irp, IrpSp); break; + #if 0 case IRP_MN_QUERY_PNP_DEVICE_STATE: break;