NVME_ERROR_INFO_LOG结构 (nvme.h)

包含指定错误信息日志页中信息的字段。

“错误信息日志”页包含命令的扩展错误信息,该命令已完成但出现错误或报告了不特定于特定命令的错误。 当“更多 (M) ”字段中的“完成队列条目”的“状态”字段中将“更多 (”设置为1时,将提供扩展错误信息,该命令与“错误”状态类型关联的命令或作为异步事件的一部分使用错误状态类型。

错误信息日志页对控制器是全局的。 此错误日志可能会返回最后 n 个 错误。 如果主机软件指定 n 个错误日志 大小的数据传输,则返回最后 n 个错误的错误日志。 条目的顺序取决于发生错误的时间,最新的错误将作为第一个日志返回。

“错误信息日志”页是一组 64 字节条目; 识别控制器 数据结构中指示支持的条目数。

此结构由“获取日志页”命令返回。 有关详细信息,请参阅 NVME_CDW10_GET_LOG_PAGE

语法

typedef struct {
  ULONGLONG           ErrorCount;
  USHORT              SQID;
  USHORT              CMDID;
  NVME_COMMAND_STATUS Status;
  struct {
    USHORT Byte : 8;
    USHORT Bit : 3;
    USHORT Reserved : 5;
  } ParameterErrorLocation;
  ULONGLONG           Lba;
  ULONG               NameSpace;
  UCHAR               VendorInfoAvailable;
  UCHAR               Reserved0[3];
  ULONGLONG           CommandSpecificInfo;
  UCHAR               Reserved1[24];
} NVME_ERROR_INFO_LOG, *PNVME_ERROR_INFO_LOG;

成员

ErrorCount

64 位递增错误计数,指示此错误的唯一标识符。

错误计数从 开始, 1h对于每个唯一的错误日志条目递增,并在电源关闭条件下保留。 值为 0h 表示条目无效;当存在丢失条目或错误数少于控制器支持的最大条目数时,可以使用此值。

SQID

指示与错误信息关联的命令的提交队列标识符 (SQID) 。 如果错误不是特定于特定命令,则此字段设置为 FFFFh

CMDID

指示与错误关联的命令的命令标识符 (CMDID) 。 如果错误不是特定于特定命令,则此值设置为 FFFFh

Status

指示已完成的命令的状态字段。

状态字段位于位 01:15。 位 0 对应于为命令发布的 阶段标记 (P) 。 如果错误不特定于特定命令,则此字段将报告最适用的状态值。

ParameterErrorLocation

ParameterErrorLocation 结构,其中包含指示与错误关联的命令参数的字节和位(如果适用)的字段。

如果参数跨越多个字节或多个位,则位置指示参数的第一个字节和位。 如果错误不是特定于特定命令,则此字段设置为 FFFFh

ParameterErrorLocation.Byte

指示命令中包含错误的字节。

此值包含在 ParameterErrorLocation 结构的位 0:7 中。 有效值为 0 到 63。

ParameterErrorLocation.Bit

指示命令中包含错误的位。

此值包含在 ParameterErrorLocation 结构的位 8:10 中。 有效值为 0 到 7。

ParameterErrorLocation.Reserved

保留 ParameterErrorLocation 结构的位 11:15。

Lba

指示遇到错误条件的第一个逻辑块地址 (LBA) (如果适用)。

NameSpace

指示与错误关联的命名空间(如果适用)。

VendorInfoAvailable

如果有其他供应商特定的错误信息可用,此字段将提供与该页面关联的日志页标识符。

值 指示 00h 没有其他可用信息。 有效值在 到 FFh的范围内80h

Reserved0[3]

保留字段。

CommandSpecificInfo

包含特定于命令的信息。 如果使用,命令定义将指定返回的信息。

Reserved1[24]

保留字段。

要求

要求
最低受支持的客户端 Windows 10
标头 nvme.h