diff --git a/reactos/drivers/bus/pci/pdo.c b/reactos/drivers/bus/pci/pdo.c index 2b882202440..a8e6271bf24 100644 --- a/reactos/drivers/bus/pci/pdo.c +++ b/reactos/drivers/bus/pci/pdo.c @@ -157,6 +157,7 @@ PdoQueryCapabilities( { PPDO_DEVICE_EXTENSION DeviceExtension; PDEVICE_CAPABILITIES DeviceCapabilities; + ULONG DeviceNumber, FunctionNumber; DPRINT("Called\n"); @@ -166,8 +167,11 @@ PdoQueryCapabilities( if (DeviceCapabilities->Version != 1) return STATUS_UNSUCCESSFUL; + DeviceNumber = DeviceExtension->PciDevice->SlotNumber.u.bits.DeviceNumber; + FunctionNumber = DeviceExtension->PciDevice->SlotNumber.u.bits.FunctionNumber; + DeviceCapabilities->UniqueID = FALSE; - DeviceCapabilities->Address = DeviceExtension->PciDevice->SlotNumber.u.AsULONG; + DeviceCapabilities->Address = ((DeviceNumber << 16) & 0xFFFF0000) + (FunctionNumber & 0xFFFF); DeviceCapabilities->UINumber = (ULONG)-1; /* FIXME */ return STATUS_SUCCESS; diff --git a/reactos/drivers/network/ndis/ndis/miniport.c b/reactos/drivers/network/ndis/ndis/miniport.c index 3080568c6d0..284b45eb198 100644 --- a/reactos/drivers/network/ndis/ndis/miniport.c +++ b/reactos/drivers/network/ndis/ndis/miniport.c @@ -1404,7 +1404,18 @@ NdisIPnPStartDevice( else Adapter->NdisMiniportBlock.SlotNumber = 0; } + else + { + /* Convert slotnumber to PCI_SLOT_NUMBER */ + ULONG PciSlotNumber = Adapter->NdisMiniportBlock.SlotNumber; + PCI_SLOT_NUMBER SlotNumber; + SlotNumber.u.AsULONG = 0; + SlotNumber.u.bits.DeviceNumber = (PciSlotNumber >> 16) & 0xFFFF; + SlotNumber.u.bits.FunctionNumber = PciSlotNumber & 0xFFFF; + + Adapter->NdisMiniportBlock.SlotNumber = SlotNumber.u.AsULONG; + } NdisCloseConfiguration(ConfigHandle); /* diff --git a/reactos/drivers/video/videoprt/videoprt.c b/reactos/drivers/video/videoprt/videoprt.c index 39680805c22..960390e9b3e 100644 --- a/reactos/drivers/video/videoprt/videoprt.c +++ b/reactos/drivers/video/videoprt/videoprt.c @@ -227,6 +227,8 @@ IntVideoPortCreateAdapterDeviceObject( { PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension; ULONG DeviceNumber; + ULONG PciSlotNumber; + PCI_SLOT_NUMBER SlotNumber; ULONG Size; NTSTATUS Status; WCHAR DeviceBuffer[20]; @@ -345,8 +347,14 @@ IntVideoPortCreateAdapterDeviceObject( PhysicalDeviceObject, DevicePropertyAddress, Size, - &DeviceExtension->SystemIoSlotNumber, + &PciSlotNumber, &Size); + + /* Convert slotnumber to PCI_SLOT_NUMBER */ + SlotNumber.u.AsULONG = 0; + SlotNumber.u.bits.DeviceNumber = (PciSlotNumber >> 16) & 0xFFFF; + SlotNumber.u.bits.FunctionNumber = PciSlotNumber & 0xFFFF; + DeviceExtension->SystemIoSlotNumber = SlotNumber.u.AsULONG; } InitializeListHead(&DeviceExtension->AddressMappingListHead);