TAPE_ERROR_ROUTINE回调函数 (minitape.h)

TAPE_ERROR_ROUTINE 在 SRB 完成并处于错误状态时提供特定于设备的错误处理。 此例程是可选的。

语法

TAPE_ERROR_ROUTINE TapeErrorRoutine;

void TapeErrorRoutine(
  [in]      PVOID MinitapeExtension,
  [in]      PSCSI_REQUEST_BLOCK Srb,
  [in, out] PTAPE_STATUS TapeStatus
)
{...}

参数

[in] MinitapeExtension

指向特定于驱动程序的微型tape 扩展的指针。 如果微型类驱动程序在初始化时未请求微型tape 扩展,则为 NULL

[in] Srb

指向失败操作的 SRB 的指针。

[in, out] TapeStatus

指向磁带类驱动程序设置 TAPE_STATUS 的指针。 磁带微型类驱动程序可以更改TAPE_STATUS或保持不变。

返回值

备注

大多数磁带微型类驱动程序不提供 TAPE_ERROR_ROUTINE 例程,因为磁带类驱动程序设置 的TAPE_STATUS 代码是合适的。

但是,对于某些设备,磁带微型类驱动程序可以识别比磁带类驱动程序更合适的错误代码。 例如,如果磁带类驱动程序返回TAPE_STATUS_BUS_RESET,磁带微型类驱动程序可能能够确定某些设备的TAPE_STATUS_NO_MEDIA更准确地表示实际问题。

磁带微型类驱动程序可以选择在其从 DriverEntry 例程传递到 TapeClassInitialize 的TAPE_INIT_DATA_EX结构中为其TAPE_ERROR_ROUTINE例程指定入口点。 对于此类微型类驱动程序,在读取、写入或设备控制命令期间发生错误时,磁带类驱动程序会设置适当的TAPE_STATUS代码,并使用微型磁带扩展、失败的 SRB 和将返回的TAPE_STATUS代码调用微类驱动程序的 TAPE_ERROR_ROUTINE例程

TAPE_ERROR_ROUTINE 确定是否根据输入参数及其对设备的了解更改磁带类驱动程序提供的状态。 如果在 Srb-SrbStatus> 中设置了SRB_STATUS_AUTOSENSE_VALID位,则 SRB 在 SenseInfoBuffer 中包含 SCSI 感知信息。 缓冲区的长度为 SenseInfoBufferLengthTAPE_ERROR_ROUTINE例程应检查此信息以及 SRB 中的 SrbStatusScsiStatus,以确定是否更改返回TAPE_STATUS。

要求

要求
目标平台 桌面
标头 minitape.h (包括 Minitape.h)

另请参阅

磁带微型类驱动程序的 DriverEntry

SCSI_REQUEST_BLOCK

TAPE_INIT_DATA_EX

TAPE_STATUS

TapeClassInitialize