IDE_HW_BUILDIO回调函数 (irb.h)

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

注意 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 例程时必须完成请求,则必须为 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