IDE_HW_BUILDIO回调函数 (irb.h)

对于每个传入的 I/O 请求,IdeHwBuildIo 微型端口驱动程序例程调用一次。

注意 ATA 端口驱动程序和 ATA 微型端口驱动程序模型将来可能会更改或不可用。 相反,我们建议使用 Storport 驱动程序Storport 微型端口 驱动程序模型。
 

语法

IDE_HW_BUILDIO IdeHwBuildio;

BOOLEAN IdeHwBuildio(
  [in] PVOID ChannelExtension,
  [in] PIDE_REQUEST_BLOCK Irb
)
{...}

参数

[in] ChannelExtension

指向微型端口驱动程序通道扩展的指针。

[in] Irb

指向 IDE_REQUEST_BLOCK 类型的结构的指针,该结构定义要处理的集成设备电子(IDE)输入/输出请求块(IRB)。

返回值

IdeHwBuildIo 返回 TRUE,以确认收到 IDE_REQUEST_BLOCK 结构。 端口驱动程序忽略 FALSE的返回值。

言论

微型端口驱动程序提供 AtaHwBuildlo 例程,该例程在启用中断的情况下执行非同步 I/O 处理。 IdeHwBuildIo 完成请求的所有未同步处理后,它将返回到端口驱动程序,端口驱动程序将请求传递给微型端口驱动程序的 IdeHwStartIo 例程,该例程执行需要同步的任务。

微型端口驱动程序在执行 IdeHwBuildIo 例程时必须遵守某些限制。 微型端口驱动程序调用 IdeHwBuildIo 而不持有任何锁。 具体而言,微型端口驱动程序不得触摸其通道扩展中的任何共享数据,也不能调用 ATA 端口驱动程序导出的任何例程。

如果微型端口驱动程序在执行 IdeHwBuildIo 例程时必须完成请求,则必须将适当的完成状态值分配给 IDE_REQUEST_BLOCK 结构 Irb 参数指向的 IDE_REQUEST_BLOCK 结构的 IrbStatus 成员。 微型端口驱动程序不得将 IrbStatus 设置为IRB_STATUS_PENDING值

微型端口驱动程序可以使用 IdeHwBuildIo 例程向端口驱动程序指示 IRB 的处理方式。 例如,微型端口驱动程序可以通过将 IRB IrbFlags 成员设置为适当的值,请求端口驱动程序将缓冲区映射到 DataBuffer 。 微型端口驱动程序不应请求与请求关联的缓冲区进行映射,除非请求是某种类型的数据传输。

IdeHwBuildIo 例程类似于 Storport HwStorBuildIo 功能例程。 有关 HwStorBuildIo 例程的详细信息,请参阅 未同步的 HwStorBuildIo 例程

IdeHwBuildIo 是可选的例程。

要求

要求 价值
目标平台 桌面
标头 irb.h (包括 Irb.h)

另请参阅

IDE_REQUEST_BLOCK

IdeHwStartIo