структура SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE (storport.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

Указывает вложенный корпус, в который клиент приложения отправляет изображение микрокода. Если значение не соответствует допустимому значению поля SUBENCLOSURE_IDENTIFIER, указанному в SES_CONFIGURATION_DIAGNOSTIC_PAGE, процесс обслуживания корпуса должен прервать операцию скачивания микрокода с состоянием 0x80.

PageLength[2]

Указывает количество байтов, приведенных на странице диагностики.

ExpectedGenerationCode[4]

Задает ожидаемое значение кода создания. Если для этого параметра не задан код текущего поколения, процесс обслуживания корпуса должен прервать загрузку микрокода с состоянием 0x80.

Mode

Указывает, в каком режиме скачать микрокод.

Значение Значение
Скачивание микрокода со смещениями, сохранение и активация
0x07
После того, как последняя команда SEND DIAGNOSTIC доставляет диагностическую страницу Download Microcode Control в подзаголовку, процесс обслуживания корпуса должен проверить полный образ микрокода (например, выполнить контрольную сумму для конкретного поставщика) и сохранить новый образ микрокода в энергонезависимом хранилище.

Если в изображении микрокода или в операции сохранения нет ошибок, процесс обслуживания корпуса должен выполнить одно из следующих действий:

  • Задайте в поле Состояниев SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR значение 0x10, если требуется, и активируйте новый образ микрокода после возврата страницы диагностики Скачивание состояния микрокода, включения питания или для процессов автономных служб корпуса — жесткого сброса.
  • Задайте для поля Состояние в SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR значение 0x11, если требуется, и только для автономных процессов служб корпуса активируйте новый образ микрокода после включения питания или жесткого сброса.
  • Задайте для поля Состояние в SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR 0x12, если требуется, и активируйте новый образ микрокода после включения питания.
Скачивание микрокода со смещениями, сохранение и отсрочка активации
0x0E
После завершения последней команды SEND DIAGNOSTIC, доставляющей SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE в подотделию, процесс обслуживания корпуса должен проверить полное изображение микрокода (например, выполнить контрольную сумму поставщика), сохранить новый образ микрокода в энергонезависимом хранилище (например, флэш-диск) и отложить активацию нового микрокода.

Если в изображении микрокода или в операции сохранения нет ошибок, процесс обслуживания корпуса должен задать для поля Состояние в SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR 0x13 в SES_DOWNLOAD_MICROCODE_STATUS_DIAGNOSTIC_PAGE, если требуется, и активировать новый микрокод после следующего:

  • Обработка этой структуры с помощью поля Режим , заданного 0x0F (т. е. активация отложенного микрокода)
  • Включение
  • Жесткий сброс
Активация отложенного микрокода
0x0F
После завершения команды SEND DIAGNOSTIC, указывающей этот режим, процесс служб корпуса должен активировать отложенное изображение микрокода, если таковой имеется.
Reserved
Все остальные значения
Зарезервировано для будущего использования.

Reserved[2]

Зарезервировано для будущего использования.

BufferID

Указывает определенный буфер в процессе служб корпуса для получения изображения микрокода. Процесс обслуживания корпуса назначает буферам коды идентификаторов буфера конкретного поставщика (например, образ встроенного ПО main может храниться в буфере 00h, а образ встроенного ПО резервной копии — в буфере 01h). Процесс обслуживания корпуса должен поддерживать значение идентификатора буфера 00h. Если поддерживается несколько буферов, процесс служб корпуса должен назначать дополнительные коды идентификаторов буфера непрерывно, начиная с 01h. Если процесс служб корпуса получает неподдерживаемый код идентификатора буфера, он должен прервать загрузку микрокода и задать для поля Состояние в SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR значение 0x80 в структуре SES_DOWNLOAD_MICROCODE_STATUS_DIAGNOSTIC_PAGE .

BufferOffset[4]

Задает смещение в байтах в буфере, в который записываются данные микрокода, кратные четырем. Процесс обслуживания корпуса может потребовать непрерывного увеличения этого поля в последовательных командах SEND DIAGNOSTIC.

ImageLength[4]

указывает общее количество байтов в изображении микрокода, которое приложение намерено отправить в указанный BufferID.

DataLength[4]

Указывает длину данных в байтах.

Data[ANYSIZE_ARRAY]

Содержит часть изображения микрокода поставщика.

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows 10 версии 1709 и более поздних версиях Windows.
Верхняя часть storport.h (включая Minitape.h, Storport.h)