Dear all,
I’m writing SCSI miniport RAID driver.
When I test my RAID Level 0 driver, I found a strange condition
When recevied Srb CDB:2A 00 00 00 01 CD 00 00 40 00 00 00
This command is need to issue to 2 hard drives separately
Issue to 1st hard drive
Srb DataBuffer = 0xAA737000, DataTransferLength = 0x00006600 bytes
BuildSATAPRD: BytesLeft = 0x6600
BuildSATAPRD: VirtualAddress=0xAA737000, PhysicalAddress.LowPart=0x134C7000,
PhysicalAddress.HighPart=0x0, length=0x1000
BuildSATAPRD: P[1].SGL[0].DataBase = 0x134C7000, DataBaseU = 0x0
BuildSATAPRD: VirtualAddress=0xAA738000, PhysicalAddress.LowPart=0x138C8000,
PhysicalAddress.HighPart=0x0, length=0x1000
BuildSATAPRD: P[1].SGL[1].DataBase = 0x138C8000, DataBaseU = 0x0
BuildSATAPRD: VirtualAddress=0xAA739000, PhysicalAddress.LowPart=0x13089000,
PhysicalAddress.HighPart=0x0, length=0x1000
BuildSATAPRD: P[1].SGL[2].DataBase = 0x13089000, DataBaseU = 0x0
BuildSATAPRD: VirtualAddress=0xAA73A000, PhysicalAddress.LowPart=0x13E0A000,
PhysicalAddress.HighPart=0x0, length=0x1000
BuildSATAPRD: P[1].SGL[3].DataBase = 0x13E0A000, DataBaseU = 0x0
BuildSATAPRD: VirtualAddress=0xAA73B000, PhysicalAddress.LowPart=0x1360B000,
PhysicalAddress.HighPart=0x0, length=0x1000
BuildSATAPRD: P[1].SGL[4].DataBase = 0x1360B000, DataBaseU = 0x0
BuildSATAPRD: VirtualAddress=0xAA73C000, PhysicalAddress.LowPart=0x1324C000,
PhysicalAddress.HighPart=0x0, length=0x1000
BuildSATAPRD: P[1].SGL[5].DataBase = 0x1324C000, DataBaseU = 0x0
BuildSATAPRD: VirtualAddress=0xAA73D000, PhysicalAddress.LowPart=0x1350D000,
PhysicalAddress.HighPart=0x0, length=0x1000
BuildSATAPRD: P[1].SGL[6].DataBase = 0x1350D000, DataBaseU = 0x0
Issue to 2nd hard drive
Srb DataBuffer = 0xAA73D600, DataTransferLength = 0x00001A00 bytes
BuildSATAPRD: BytesLeft = 0x1A00
BuildSATAPRD: VirtualAddress=0xAA73D600, PhysicalAddress.LowPart=0x134C7000,
PhysicalAddress.HighPart=0x0, length=0x1000
BuildSATAPRD: P[0].SGL[0].DataBase = 0x134C7000, DataBaseU = 0x0
BuildSATAPRD: VirtualAddress=0xAA73E600, PhysicalAddress.LowPart=0x138C8000,
PhysicalAddress.HighPart=0x0, length=0x1000
BuildSATAPRD: P[0].SGL[1].DataBase = 0x138C8000, DataBaseU = 0x0
Different VirtualAddress=0xAA737000 and VirtualAddress=0xAA73D600
But ScsiPortGetPhysicalAddress return same
PhysicalAddress.LowPart=0x134C7000
Is wrong parameter pass to ScsiPortGetPhysicalAddress?