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 后,HBA 设备对象的 DeviceExtension-HwDeviceExtension> 成员中的微型端口驱动程序可以使用此区域。 端口驱动程序在删除设备时释放此内存。
[in] Srb
指向 DMA 传输的 SCSI 请求块的指针。
[in] LogicalAddress
指定传输操作的起始地址。 此值可以是要向其传输数据或从中传输数据的缓冲区的基址。 此值可以是此类缓冲区内的偏移量。
[in] Length
指定要传输的字节数。
返回值
无
备注
只有使用系统 DMA 控制器的 HBA 的微型端口驱动程序 (从属 DMA) 调用 ScsiPortIoMapTransfer。 在此类微型端口驱动程序设置其 HBA 以传输数据之前,必须调用此例程。 LogicalAddress 和 Length 指定的范围必须在给定 SRB 描述的缓冲区内。
操作系统特定的端口驱动程序对系统 DMA 控制器进行程序后,它会调用微型端口驱动程序的 HwScsiDmaStarted 例程。 HwScsiDmaStarted 应对 HBA 进行编程以开始数据传输。 请注意,在微型端口驱动程序对 ScsiPortIoMapTransfer 的调用与操作系统特定的端口驱动程序对微型端口驱动程序的 HwScsiDmaStarted 例程的调用之间,HBA 可能会中断。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | srb.h (包括 Miniport.h、Scsi.h) |
Library | Scsiport.lib |