ScsiPortIoMapTransfer 函数 (srb.h)
ScsiPortIoMapTransfer 例程为微型端口驱动程序设置系统 DMA 控制器,以便通过从属 HBA 传输数据。
语法
SCSIPORT_API VOID ScsiPortIoMapTransfer(
[in] PVOID HwDeviceExtension,
[in] PSCSI_REQUEST_BLOCK Srb,
[in] PVOID LogicalAddress,
[in] ULONG Length
);
参数
[in] HwDeviceExtension
指向硬件设备扩展的指针。 这是端口驱动程序代表微型端口驱动程序分配和初始化的每个 HBA 存储区域。 微型端口驱动程序通常在此扩展中存储特定于 HBA 的信息,例如 HBA 的状态和 HBA 的映射访问范围。 在微型端口驱动程序调用 ScsiPortInitialize后,此区域可供 DeviceExtension->HwDeviceExtension 成员的微型端口驱动程序使用。 端口驱动程序在删除设备时释放此内存。
[in] Srb
指向 DMA 传输的 SCSI 请求块的指针。
[in] LogicalAddress
指定传输作的起始地址。 此值可以是要从中传输数据的缓冲区的基址。 此值可以是此类缓冲区中的偏移量。
[in] Length
指定要传输的字节数。
返回值
没有
言论
只有使用系统 DMA 控制器(从属 DMA)调用的 HBA 的微型端口驱动程序 ScsiPortIoMapTransfer。 在此类微型端口驱动程序设置 HBA 以传输数据之前,必须调用此例程。 LogicalAddress 和 Length 指定的范围必须位于给定 SRB 描述的缓冲区内。
作系统特定的端口驱动程序对系统 DMA 控制器进行程序后,它会调用微型端口驱动程序的 HwScsiDmaStarted 例程。 HwScsiDmaStarted 应将 HBA 编程为开始数据传输。 请注意,HBA 可以在微型端口驱动程序调用 ScsiPortIoMapTransfer 和特定于作系统的端口驱动程序调用微型端口驱动程序的 HwScsiDmaStarted 例程之间中断。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | srb.h (包括 Miniport.h、Scsi.h) |
库 | Scsiport.lib |