IDE_HW_BUILDIO回调函数 (irb.h)
IdeHwBuildIo 微型端口驱动程序例程针对每个传入的 I/O 请求调用一次。
语法
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) |