CHANGER_ELEMENT_STATUS 结构 (ntddchgr.h)

ChangerGetElementStatus 例程返回此结构中的状态信息。

语法

typedef struct _CHANGER_ELEMENT_STATUS {
  CHANGER_ELEMENT Element;
  CHANGER_ELEMENT SrcElementAddress;
  ULONG           Flags;
  ULONG           ExceptionCode;
  UCHAR           TargetId;
  UCHAR           Lun;
  USHORT          Reserved;
  UCHAR           PrimaryVolumeID[MAX_VOLUME_ID_SIZE];
  UCHAR           AlternateVolumeID[MAX_VOLUME_ID_SIZE];
} CHANGER_ELEMENT_STATUS, *PCHANGER_ELEMENT_STATUS;

成员

Element

指定此结构所引用 的 CHANGER_ELEMENT 类型的元素。

SrcElementAddress

指定类型为 CHANGER_ELEMENT 当前此元素中的媒体最近从中移动的元素。 仅当 标志中也设置了ELEMENT_STATUS_SVALID时,此成员才有效。 此值必须是设备唯一值的从零开始的偏移量。

Flags

指示 元素的状态,可以是以下一个或多个值。

ELEMENT_STATUS_FULL

元素包含一段媒体。 如果 Element 成员中的ElementTypeChangerDriveChangerSlotChangerTransport,则此标志有效。 如果 ElementTypeChangerIEPort,则仅当在 GET_CHANGER_PARAMETERS 的功能 0 中也设置了CHANGER_REPORT_IEPORT_STATE时,此标志才有效。

ELEMENT_STATUS_IMPEXP

此元素中的媒体由 运算符放置在那里。 仅当 Element 成员中的ElementTypeChangerIEPort 时,此标志才有效。

ELEMENT_STATUS_EXCEPT

元素处于异常状态。 有关详细信息,请查看 ExceptionCode 成员。

ELEMENT_STATUS_ACCESS

更换器的传输元素可以访问此元素中的介质片段。 微型类驱动程序清除此标志以指示由于以下原因之一无法访问媒体:如果 Element 成员中的ElementTypeChangerSlot,则槽不存在于变更器 (例如,包含该槽的杂志已被物理删除) 。 如果 ElementTypeChangerDrive,则驱动器已损坏或已删除。 如果 ElementTypeChangerIEPort,则扩展 IEport。

ELEMENT_STATUS_EXENAB

元素支持通过更换器的 IEport 导出媒体。

ELEMENT_STATUS_INENAB

元素支持通过更改器的 IEport 导入媒体。

ELEMENT_STATUS_LUN_VALID

Lun 成员中的设备编号有效。 仅当 Element 成员中的ElementTypeChangerDrive 时,此标志才有效。

ELEMENT_STATUS_ID_VALID

TargetID 成员中的 SCSI 目标 ID 有效。 仅当 Element 成员中的ElementTypeChangerDrive 时,此标志才有效。

ELEMENT_STATUS_NOT_BUS

LunTargetID 指示的地址上的驱动器与更换器本身位于不同的 SCSI 总线上。

ELEMENT_STATUS_INVERT

元素中的媒体已翻转。 仅当同时设置了ELEMENT_STATUS_SVALID标志时,此标志才有效。

ELEMENT_STATUS_SVALID

SourceElement 成员和 ELEMENT_STATUS_INVERT 标志都有效。

ELEMENT_STATUS_PVOLTAG

PrimaryVolumeID 成员中的主卷信息有效。

ELEMENT_STATUS_AVOLTAG

AlternateVolumeID 成员中的备用卷信息有效。

ExceptionCode

指示元素处于异常状态。 仅当在 Flags 中设置了ELEMENT_STATUS_EXCEPT时,此成员才有效。 ExceptionCode 可以设置为以下值之一。

ERROR_LABEL_UNREADABLE

更换器的条形码读取器无法读取此元素中介质上的条形码标签,因为介质缺失、损坏、位置不正确或倒置。

ERROR_LABEL_QUESTIONABLE

由于单位注意条件,标签可能无效。

ERROR_SLOT_NOT_PRESENT

此元素地址处的槽当前未安装在更换器中。 微型类驱动程序为可移动杂志中的每个槽设置此代码,以指示该杂志已被删除。

ERROR_DRIVE_NOT_INSTALLED

此元素地址处的驱动器不存在。 如果更换器可以在没有驱动器的情况下继续运行,则其微型类驱动程序会为驱动器设置ERROR_DRIVE_NOT_INSTALLED。

ERROR_TRAY_MALFUNCTION

此元素地址处的驱动器具有一个托盘,必须扩展该托盘才能加载或移除介质,并且托盘未根据需要扩展。

ERROR_UNHANDLED_ERROR

未知错误条件。

TargetId

指定 SCSI 更改器的此元素地址处驱动器的 SCSI 目标 ID。 仅当 Element 成员中的ElementTypeChangerDrive 且在 Flags 中设置ELEMENT_STATUS_ID_VALID时,此成员才有效。

Lun

指定此元素地址处驱动器的 SCSI 设备编号。 仅当 Element 成员中的 ElementTypeChangerDrive 且在 Flags 中设置ELEMENT_STATUS_LUN_VALID时,此成员才有效。

Reserved

保留供将来使用。 此成员的值必须为零。

PrimaryVolumeID[MAX_VOLUME_ID_SIZE]

指定媒体的主卷标识符。 如果更改器支持条形码读取器,并且已按照 GET_CHANGER_PARAMETERS) 功能 0 中的CHANGER_BAR_CODE_SCANNER_INSTALLED指示 (安装读取器,则微型类驱动程序必须将 PrimaryVolumeID 设置为媒体的条形码。 如果更改程序不支持条形码读取器,则微型类驱动程序应将 PrimaryVolumeID 设置为之前使用 ChangerQueryVolumeTags 例程和ASSERT_PRIMARY或REPLACE_PRIMARY操作分配给媒体的值。 仅当“ 标志”中也设置了ELEMENT_STATUS_PVOLTAG时,此成员才有效。 如果卷标识符缺失或不可读,微型类驱动程序应清除此标志并设置相应的错误状态。 此标识符不能大于 MAX_VOLUME_ID_SIZE 个字节。

AlternateVolumeID[MAX_VOLUME_ID_SIZE]

指定媒体的备用卷标识。 此成员仅对双面媒体有效,并且与反面的 ID 相关。 它从不表示条形码。 微型类驱动程序必须将 AlternateVolumeID 设置为之前使用 ChangerQueryVolumeTags 例程和ASSERT_ALTERNATE或REPLACE_ALTERNATE操作分配给媒体的值。 标识符必须不超过 MAX_VOLUME_ID_SIZE 个字节,并且仅在 标志中也设置了ELEMENT_STATUS_AVOLTAG时才有效。

注解

对于大多数元素类型,变更器微类驱动程序使用 CHANGER_ELEMENT_STATUS 向变更器类驱动程序报告指定元素的状态。 但是, ChangerDrive 类型的某些元素会返回产品信息数据。 如果设备提供产品信息,微型类驱动程序将在 CHANGER_ELEMENT_STATUS_EX 类型的结构中报告元素状态数据,而不是使用 CHANGER_ELEMENT_STATUS。 微类驱动程序通过在结构的 Flags 成员中设置ELEMENT_STATUS_PRODUCT_DATA来指示产品信息存在。

要求

要求
Header ntddchgr.h

另请参阅

CHANGER_ELEMENT

CHANGER_ELEMENT_STATUS_EX

ChangerGetElementStatus

ChangerQueryVolumeTags

IOCTL_CHANGER_GET_ELEMENT_STATUS