Partager via


structure SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE (storport.h)

La structure SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE contient une image de microcode spécifique au fournisseur (c’est-à-dire, microprogramme) à utiliser par le processus des services de boîtier.

Syntaxe

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;

Membres

PageCode

Spécifie la page de diagnostic envoyée ou demandée en fonction de la valeur. Pour une page de diagnostic de contrôle de microcode, la valeur doit être 0x0E.

SubEnclosureId

Spécifie le sous-boîtier auquel le client d’application envoie l’image de microcode. Si la valeur ne correspond pas à une valeur de champ SUBENCLOSURE_IDENTIFIER valide trouvée dans le SES_CONFIGURATION_DIAGNOSTIC_PAGE, le processus des services de boîtier doit abandonner l’opération de téléchargement de microcode avec un status de 0x80.

PageLength[2]

Spécifie le nombre d’octets qui suivent dans la page de diagnostic.

ExpectedGenerationCode[4]

Spécifie la valeur attendue du code de génération. Si ce paramètre n’est pas défini sur le code de génération actuelle, le processus des services de boîtier doit abandonner l’opération de téléchargement de microcode avec un status de 0x80.

Mode

Spécifie le mode avec lequel télécharger le microcode.

Valeur Signification
Télécharger un microcode avec des décalages, enregistrer et activer
0x07
Une fois que la dernière commande SEND DIAGNOSTIC a remis une page de diagnostic Download Microcode Control à la sous-fermeture terminée, le processus des services de boîtier doit vérifier l’image de microcode complète (par exemple, effectuer une somme de contrôle spécifique au fournisseur) et enregistrer la nouvelle image de microcode dans un stockage non volatile.

S’il n’y a aucune erreur dans l’image de microcode ou dans l’opération d’enregistrement, le processus des services de boîtier doit effectuer l’une des actions suivantes :

  • Définissez le champ État dans SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR pour 0x10, si nécessaire, et activez la nouvelle image de microcode après avoir retourné la page de diagnostic de l’état du microcode de téléchargement, mis sous tension ou pour les processus de services de boîtier autonomes, une réinitialisation matérielle.
  • Définissez le champ État dans SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR pour 0x11, si vous le souhaitez, et pour les processus des services de boîtier autonome uniquement, activez la nouvelle image de microcode après la mise sous tension ou la réinitialisation matérielle.
  • Définissez le champ État dans SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR pour 0x12, si nécessaire, et activez la nouvelle image de microcode après la mise sous tension.
Télécharger le microcode avec des décalages, enregistrer et différer l’activation
0x0E
Une fois la dernière commande SEND DIAGNOSTIC fournissant une SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE à la sous-fermeture terminée, le processus des services de boîtier doit vérifier l’image de microcode complète (par exemple, effectuer une somme de contrôle spécifique au fournisseur), enregistrer la nouvelle image de microcode dans un stockage non volatile (par exemple, flash ROM) et différer l’activation du nouveau microcode.

S’il n’y a aucune erreur dans l’image de microcode ou dans l’opération d’enregistrement, le processus des services de boîtier doit définir le champ État dans SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR pour 0x13 dans le SES_DOWNLOAD_MICROCODE_STATUS_DIAGNOSTIC_PAGE, si nécessaire, et activer le nouveau microcode après :

  • Traitement de cette structure avec le champ Mode défini sur 0x0F (par exemple, Activer le microcode différé)
  • Une mise sous tension
  • Une réinitialisation matérielle
Activer le microcode différé
0x0F
Une fois la commande SEND DIAGNOSTIC spécifiant ce mode terminée, le processus des services de boîtier active l’image de microcode différée, le cas échéant.
Reserved
Toutes les autres erreurs
Réservé à un usage ultérieur.

Reserved[2]

Réservé à un usage ultérieur.

BufferID

Spécifie une mémoire tampon spécifique dans le processus des services de boîtier pour recevoir l’image de microcode. Le processus des services de boîtier affecte des codes d’ID de mémoire tampon spécifiques au fournisseur aux mémoires tampons (par exemple, l’image du microprogramme main peut être stockée dans la mémoire tampon 00h et une image de microprogramme de sauvegarde peut être stockée dans la mémoire tampon 01h). Le processus des services de boîtier doit prendre en charge une valeur d’ID de mémoire tampon de 00h. Si plusieurs mémoires tampons sont prises en charge, le processus des services de boîtier doit affecter des codes d’ID de mémoire tampon supplémentaires de manière contiguë, à compter de 01h. Si le processus des services de boîtier reçoit un code d’ID de mémoire tampon non pris en charge, il doit abandonner l’opération de téléchargement du microcode et définir le champ État dans SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR sur 0x80 dans la structure SES_DOWNLOAD_MICROCODE_STATUS_DIAGNOSTIC_PAGE .

BufferOffset[4]

Spécifie le décalage en octets dans la mémoire tampon dans laquelle les données de microcode sont écrites en plusieurs de quatre. Le processus des services de boîtier peut exiger que ce champ augmente de façon contiguë dans les commandes SEND DIAGNOSTIC consécutives.

ImageLength[4]

spécifie le nombre total d’octets dans l’image de microcode que l’application a l’intention d’envoyer au BufferID spécifié.

DataLength[4]

Spécifie la longueur des données, en octets.

Data[ANYSIZE_ARRAY]

Contient une partie de l’image de microcode spécifique au fournisseur.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows 10 version 1709 et ultérieures de Windows.
En-tête storport.h (inclure Minitape.h, Storport.h)