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后,此区域可供 DeviceExtension->HwDeviceExtension 成员的微型端口驱动程序使用。 端口驱动程序在删除设备时释放此内存。

[in] Srb

指向 DMA 传输的 SCSI 请求块的指针。

[in] LogicalAddress

指定传输作的起始地址。 此值可以是要从中传输数据的缓冲区的基址。 此值可以是此类缓冲区中的偏移量。

[in] Length

指定要传输的字节数。

返回值

没有

言论

只有使用系统 DMA 控制器(从属 DMA)调用的 HBA 的微型端口驱动程序 ScsiPortIoMapTransfer。 在此类微型端口驱动程序设置 HBA 以传输数据之前,必须调用此例程。 LogicalAddressLength 指定的范围必须位于给定 SRB 描述的缓冲区内。

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

要求

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

另请参阅

HwScsiDmaStarted

ScsiPortFlushDma