From be4fb81c9435c7e59549487264f00a96d552368f Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Thu, 24 Nov 2011 00:07:15 +0000 Subject: [PATCH] [SCSIPORT] - Implement ScsiPortGetLogicalUnit svn path=/trunk/; revision=54484 --- reactos/drivers/storage/scsiport/scsiport.c | 50 ++++++++++----------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/reactos/drivers/storage/scsiport/scsiport.c b/reactos/drivers/storage/scsiport/scsiport.c index 5b360f0ed38..3747fb80196 100644 --- a/reactos/drivers/storage/scsiport/scsiport.c +++ b/reactos/drivers/storage/scsiport/scsiport.c @@ -580,37 +580,35 @@ ScsiPortGetLogicalUnit(IN PVOID HwDeviceExtension, IN UCHAR TargetId, IN UCHAR Lun) { - UNIMPLEMENTED; -#if 0 - PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; - PSCSI_PORT_LUN_EXTENSION LunExtension; - PLIST_ENTRY Entry; + PSCSI_PORT_DEVICE_EXTENSION DeviceExtension; + PSCSI_PORT_LUN_EXTENSION LunExtension; - DPRINT("ScsiPortGetLogicalUnit() called\n"); + DPRINT("ScsiPortGetLogicalUnit() called\n"); - DeviceExtension = CONTAINING_RECORD(HwDeviceExtension, - SCSI_PORT_DEVICE_EXTENSION, - MiniPortDeviceExtension); - if (IsListEmpty(&DeviceExtension->LunExtensionListHead)) - return NULL; + DeviceExtension = CONTAINING_RECORD(HwDeviceExtension, + SCSI_PORT_DEVICE_EXTENSION, + MiniPortDeviceExtension); - Entry = DeviceExtension->LunExtensionListHead.Flink; - while (Entry != &DeviceExtension->LunExtensionListHead) + /* Check the extension size */ + if (!DeviceExtension->LunExtensionSize) { - LunExtension = CONTAINING_RECORD(Entry, - SCSI_PORT_LUN_EXTENSION, - List); - if (LunExtension->PathId == PathId && - LunExtension->TargetId == TargetId && - LunExtension->Lun == Lun) - { - return (PVOID)&LunExtension->MiniportLunExtension; - } - - Entry = Entry->Flink; + /* They didn't want one */ + return NULL; } -#endif - return NULL; + + LunExtension = SpiGetLunExtension(DeviceExtension, + PathId, + TargetId, + Lun); + /* Check that the logical unit exists */ + if (!LunExtension) + { + /* Nope, return NULL */ + return NULL; + } + + /* Return the logical unit miniport extension */ + return (LunExtension + 1); }