estrutura SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE (scsi.h)

A estrutura SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE contém uma imagem de microcódigo específico do fornecedor (ou seja, firmware) para uso pelo processo de serviços de compartimento.

Sintaxe

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;

Membros

PageCode

Especifica a página de diagnóstico que está sendo enviada ou solicitada com base no valor . Para uma página de diagnóstico do Controle de Microcódigo, o valor deve ser 0x0E.

SubEnclosureId

Especifica o sub-compartimento para o qual o cliente do aplicativo está enviando a imagem de microcódigo. Se o valor não corresponder a um valor de campo de SUBENCLOSURE_IDENTIFIER válido encontrado no SES_CONFIGURATION_DIAGNOSTIC_PAGE, o processo de serviços de compartimento anulará a operação de microcódigo de download com um status de 0x80.

PageLength[2]

Especifica o número de bytes a seguir na página de diagnóstico.

ExpectedGenerationCode[4]

Especifica o valor esperado do código de geração. Se esse parâmetro não estiver definido como o código de geração atual, o processo de serviços de compartimento anulará a operação de microcódigo de download com um status de 0x80.

Mode

Especifica com qual modo baixar o microcódigo.

Valor Significado
Baixar microcódigo com deslocamentos, salvar e ativar
0x07
Depois que o último comando SEND DIAGNOSTIC entregar uma página de diagnóstico Baixar Controle de Microcódigo à subenclosure for concluída, o processo de serviços de compartimento verificará a imagem de microcódigo completa (por exemplo, executar uma soma de verificação específica do fornecedor) e salvará a nova imagem de microcódigo em armazenamento não volátil.

Se não houver erros na imagem de microcódigo ou na operação de salvamento, o processo de serviços de compartimento deverá executar uma das seguintes ações:

  • Defina o campo Status em SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR como 0x10, se solicitado, e ative a nova imagem de microcódigo depois de retornar a página de diagnóstico Baixar Status do Microcódigo, ligar ou para processos de serviços de compartimento autônomo, uma redefinição forçada.
  • Defina o campo Status em SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR como 0x11, se solicitado, e somente para processos de serviços de compartimento autônomo, ative a nova imagem de microcódigo após ligar ou reiniciar.
  • Defina o campo Status em SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR como 0x12, se solicitado, e ative a nova imagem de microcódigo após ligar.
Baixar microcódigo com deslocamentos, salvar e adiar ativação
0x0E
Após a conclusão do último comando SEND DIAGNOSTIC que fornece uma SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE à subenclosura, o processo de serviços de compartimento deve verificar a imagem de microcódigo completa (por exemplo, executar uma soma de verificação específica do fornecedor), salvar a nova imagem de microcódigo em armazenamento não volátil (por exemplo, ROM flash) e adiar a ativação do novo microcódigo.

Se não houver erros na imagem de microcódigo ou na operação de salvamento, o processo de serviços de compartimento definirá o campo Status em SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR como 0x13 no SES_DOWNLOAD_MICROCODE_STATUS_DIAGNOSTIC_PAGE, se solicitado, e ativará o novo microcódigo após:

  • Processando essa estrutura com o campo Modo definido como 0x0F (ou seja, Ativar microcódigo adiado)
  • Uma energia ativada
  • Uma redefinição forçada
Ativar o microcódigo adiado
0x0F
Depois que o comando SEND DIAGNOSTIC especificar esse modo for concluído, o processo de serviços de compartimento ativará a imagem de microcódigo adiada, se houver.
Reserved
Todos os outros valores
Reservado para uso futuro.

Reserved[2]

Reservado para uso futuro.

BufferID

Especifica um buffer específico dentro do processo de serviços de compartimento para receber a imagem de microcódigo. O processo de serviços de compartimento atribui códigos de ID de buffer específicos do fornecedor a buffers (por exemplo, a imagem de firmware main pode ser armazenada no buffer 00h e uma imagem de firmware de backup pode ser armazenada no buffer 01h). O processo de serviços de compartimento deve dar suporte a um valor de ID de buffer de 00h. Se houver suporte para mais de um buffer, o processo de serviços de compartimento atribuirá códigos de ID de buffer adicionais de forma contígua, começando com 01h. Se o processo de serviços de compartimento receber um código de ID de buffer sem suporte, ele anulará a operação de microcódigo de download e definirá o campo Status em SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR como 0x80 na estrutura SES_DOWNLOAD_MICROCODE_STATUS_DIAGNOSTIC_PAGE .

BufferOffset[4]

Especifica o deslocamento em bytes dentro do buffer ao qual os dados de microcódigo são gravados em múltiplos de quatro. O processo de serviços de compartimento pode exigir que esse campo aumente contíguamente em comandos SEND DIAGNOSTIC consecutivos.

ImageLength[4]

especifica o número total de bytes na imagem de microcódigo que o aplicativo pretende enviar para o BufferID especificado.

DataLength[4]

Especifica o comprimento de Dados, em bytes.

Data[ANYSIZE_ARRAY]

Contém parte da imagem de microcódigo específica do fornecedor.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível em Windows 10, versão 1709 e versões posteriores do Windows.
Cabeçalho scsi.h (inclua Minitape.h, Storport.h)