Поделиться через


структура 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

Указывает страницу диагностики, отправляемую или запрашиваемую на основе значения . Для страницы диагностики Microcode Control значение должно быть 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.
Верхняя часть scsi.h (включая Minitape.h, Storport.h)