·SCSI Miniports Should Not Use Both DMA and PIO
The SCSI port driver cannot guarantee synchronization between DMA transfers and the Srb.DataBuffer that has been mapped for the miniport while the SRB is being processed. As a result, miniport drivers that use DMA should not:
·Set both NeedPhysicalAddresses and MapBuffers to TRUE in the PORT_CONFIGURATION_INFORMATION structure.
·Modify the contents of Srb.DataBuffer while they are processing an SRB.
·Access data transferred from the adapter into Srb.DataBuffer.
The SCSI port driver ensures the contents of Srb.DataBuffer are synchronized with the DMA transfer after the request has been completed (provided the miniport has flushed the DMA channel).
·SCSI Miniport IOCTLs and ISA Adapters
SRB_FUNCTION_IO_CONTROL requests are set up by the SCSI port driver to transfer data from the adapter. The port driver does not copy the contents of Srb.DataBuffer to any pages that the system has remapped (pages are remapped below 16 MB so they are accessible by ISA devices).
As a result, SCSI miniport drivers should not DMA transfer data in Srb.DataBuffer directly to the adapter. Miniport drivers can transfer the data by copying the buffer’s contents into a section of non-cached extension and to the adapter from there.