ScsiPortIoMapTransfer 函数 (srb.h)

ScsiPortIoMapTransfer 例程为微型端口驱动程序设置系统 DMA 控制器,以便通过从属 HBA 传输数据。

注意 SCSI 端口驱动程序和 SCSI 微型端口驱动程序模型将来可能会更改或不可用。 建议改用 Storport 驱动程序Storport 微型端口 驱动程序模型。
 

语法

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 以传输数据之前,必须调用此例程。 LogicalAddressLength 指定的范围必须在给定 SRB 描述的缓冲区内。

操作系统特定的端口驱动程序对系统 DMA 控制器进行程序后,它会调用微型端口驱动程序的 HwScsiDmaStarted 例程。 HwScsiDmaStarted 应对 HBA 进行编程以开始数据传输。 请注意,在微型端口驱动程序对 ScsiPortIoMapTransfer 的调用与操作系统特定的端口驱动程序对微型端口驱动程序的 HwScsiDmaStarted 例程的调用之间,HBA 可能会中断。

要求

要求
目标平台 桌面
标头 srb.h (包括 Miniport.h、Scsi.h)
Library Scsiport.lib

另请参阅

HwScsiDmaStarted

ScsiPortFlushDma