SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE结构(scsi.h)

SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE 结构包含供应商特定的微代码(即固件)映像,供机箱服务进程使用。

语法

typedef struct _SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE {
  UCHAR PageCode;
  UCHAR SubEnclosureId;
  UCHAR PageLength[2];
  UCHAR ExpectedGenerationCode[4];
  UCHAR Mode;
  UCHAR Reserved[2];
  UCHAR BufferID;
  UCHAR BufferOffset[4];
  UCHAR ImageLength[4];
  UCHAR DataLength[4];
  UCHAR Data[ANYSIZE_ARRAY];
} SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE, *PSES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE;

成员

PageCode

指定根据值发送或请求的诊断页。 对于微代码控制诊断页,该值应0x0E。

SubEnclosureId

指定应用程序客户端向其发送微代码映像的子机箱。 如果该值与 SES_CONFIGURATION_DIAGNOSTIC_PAGE中找到的有效SUBENCLOSURE_IDENTIFIER字段值不匹配,则机箱服务过程应中止下载微代码作,其状态为0x80。

PageLength[2]

指定诊断页中后面的字节数。

ExpectedGenerationCode[4]

指定生成代码的预期值。 如果未将此参数设置为当前生成代码,则机箱服务过程应中止下载微代码作,状态为0x80。

Mode

指定要使用哪个模式下载微代码。

价值 意义
下载带有偏移量、保存和激活 的微代码
0x07
在上一个 SEND DIAGNOSTIC 命令将“下载微码控制”诊断页传递到子克隆完成之后,机箱服务过程应验证完整的微代码图像(例如,执行供应商特定的校验和),并将新的微码图像保存到非易失性存储中。

如果微代码图像或保存作中没有错误,则机箱服务过程应执行以下作之一:

下载带有偏移量、保存和延迟激活 的微代码
0x0E
在上一个 SEND DIAGNOSTIC 命令将 SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE 传送到子克隆完成之后,机箱服务过程应验证完整的微代码图像(例如,执行供应商特定的校验和),将新的微代码图像保存到非易失性存储(例如闪存 ROM),并延迟激活新的微码。

如果微码图像或保存作中没有错误,则机箱服务过程应将 SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR 中的 状态 字段设置为 SES_DOWNLOAD_MICROCODE_STATUS_DIAGNOSTIC_PAGE中的0x13(如果请求)并在以下任一作后激活新微码:

  • 处理此结构时,模式 字段设置为0x0F(即激活延迟微码)
  • 开机
  • 硬重置
激活延迟微码
0x0F
指定此模式的 SEND DIAGNOSTIC 命令完成后,机箱服务进程应激活延迟的微代码图像(如果有)。
保留
所有其他值
保留以供将来使用。

Reserved[2]

保留以供将来使用。

BufferID

指定机箱服务进程中用于接收微代码图像的特定缓冲区。 机箱服务过程将供应商特定的缓冲区 ID 代码分配给缓冲区(例如,主固件映像可能存储在缓冲区 00h 中,备份固件映像可以存储在缓冲区 01h 中)。 机箱服务过程应支持缓冲区 ID 值为 00h。 如果支持多个缓冲区,则机箱服务进程应连续分配额外的缓冲区 ID 代码,从 01h 开始。 如果机箱服务进程收到不受支持的缓冲区 ID 代码,则它将中止下载微代码作,并将 SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR 中的 状态 字段设置为 SES_DOWNLOAD_MICROCODE_STATUS_DIAGNOSTIC_PAGE 结构中的0x80。

BufferOffset[4]

指定以字节为单位的缓冲区中的偏移量(以字节为单位),微代码数据以 4 的倍数写入缓冲区中。 机箱服务过程可能需要连续增加此字段的 SEND DIAGNOSTIC 命令。

ImageLength[4]

指定应用程序打算发送到指定 BufferID的微代码图像中的字节总数。

DataLength[4]

指定 数据的长度(以字节为单位)。

Data[ANYSIZE_ARRAY]

包含供应商特定的微代码映像的一部分。

要求

要求 价值
最低支持的客户端 在 Windows 10 版本 1709 及更高版本的 Windows 中可用。
标头 scsi.h (包括 Minitape.h、Storport.h)