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

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

[in] Srb

指向失败作的 SRB 的指针。

[in, out] TapeStatus

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

返回值

没有

言论

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

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

磁带微型类驱动程序(可选)在TAPE_INIT_DATA_EX结构中为其 TAPE_ERROR_ROUTINE 例程指定入口点,该类驱动程序从其 DriverEntry 例程传递给 TapeClassInitialize。 对于此类微型类驱动程序,在读取、写入或设备控制命令期间发生错误时,磁带类驱动程序会设置适当的TAPE_STATUS代码,并使用 minitape 扩展、失败的 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