Share via


SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE-Struktur (scsi.h)

Die SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE-Struktur enthält ein herstellerspezifisches Microcodeimage (d. h. Firmware) zur Verwendung durch den Gehäusedienstprozess.

Syntax

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;

Member

PageCode

Gibt die Diagnoseseite an, die basierend auf dem Wert gesendet oder angefordert wird. Für eine Diagnoseseite des Microcodesteuerelements sollte der Wert 0x0E werden.

SubEnclosureId

Gibt das Untergehäuse an, an das der Anwendungsclient das Microcodeimage sendet. Wenn der Wert nicht mit einem gültigen SUBENCLOSURE_IDENTIFIER Feldwert übereinstimmt, der in der SES_CONFIGURATION_DIAGNOSTIC_PAGE gefunden wurde, muss der Prozess der Gehäusedienste den Vorgang zum Herunterladen von Microcode mit einer status von 0x80 abbrechen.

PageLength[2]

Gibt die Anzahl der Bytes an, die auf der Diagnoseseite folgen.

ExpectedGenerationCode[4]

Gibt den erwarteten Wert des Generierungscodes an. Wenn dieser Parameter nicht auf den Code der aktuellen Generation festgelegt ist, muss der Prozess der Gehäusedienste den Vorgang zum Herunterladen von Microcode mit einer status von 0x80 abbrechen.

Mode

Gibt an, mit welchem Modus der Microcode heruntergeladen werden soll.

Wert Bedeutung
Herunterladen von Microcode mit Offsets, Speichern und Aktivieren
0x07
Nachdem der letzte SEND DIAGNOSTIC-Befehl die Diagnoseseite "Microcodesteuerung herunterladen" an die Subenclosure übermittelt hat, überprüft der Enclosure Services-Prozess das vollständige Microcodeimage (z. B. eine herstellerspezifische Prüfsumme) und speichert das neue Microcodeimage in einem nicht flüchtigen Speicher.

Wenn im Mikrocodeimage oder im Speichervorgang keine Fehler auftreten, führt der Prozess der Gehäusedienste eine der folgenden Aktionen aus:

  • Legen Sie das Feld Status in SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR auf 0x10 fest, falls erforderlich, und aktivieren Sie das neue Microcodeimage, nachdem Sie entweder die Diagnoseseite "Microcodestatus herunterladen" zurückgegeben, ein-/einschalten oder für eigenständige Gehäusedienste-Prozesse eine Hard Reset-Instanz erhalten haben.
  • Legen Sie das Feld Status in SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR auf 0x11 fest, und aktivieren Sie das neue Microcodeimage bei Bedarf nur für eigenständige Gehäusediensteprozesse nach dem Einschalten oder dem harten Zurücksetzen.
  • Legen Sie das Feld Status in SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR auf 0x12 fest, falls erforderlich, und aktivieren Sie das neue Microcodeimage nach dem Einschalten.
Microcode mit Offsets herunterladen, Speichern und Zurückstellen aktivieren
0x0E
Nach Abschluss des letzten SEND DIAGNOSTIC-Befehls, der eine SES_DOWNLOAD_MICROCODE_CONTROL_DIAGNOSTIC_PAGE an die Subenclosure übermittelt, muss der Enclosure Services-Prozess das vollständige Microcodeimage überprüfen (z. B. eine herstellerspezifische Prüfsumme ausführen), das neue Microcodeimage in einem nicht flüchtigen Speicher (z. B. Flash-ROM) speichern und die Aktivierung des neuen Mikrocodes zurückstellen.

Wenn im Mikrocodeimage oder im Speichervorgang keine Fehler auftreten, legt der Prozess der Gehäusedienste das Feld Status in SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR auf 0x13 im SES_DOWNLOAD_MICROCODE_STATUS_DIAGNOSTIC_PAGE fest, falls erforderlich, und aktiviert den neuen Mikrocode nach folgendem:

  • Verarbeiten dieser Struktur, wobei das Feld Modus auf 0x0F festgelegt ist (d. h. verzögerten Mikrocode aktivieren)
  • Einschalten
  • Hard Reset
Aktivieren von verzögertem Microcode
0x0F
Nachdem der Befehl SEND DIAGNOSTIC, der diesen Modus angibt, abgeschlossen ist, aktiviert der Enclosure Services-Prozess das verzögerte Microcodeimage( falls vorhanden).
Reserved
Alle anderen Werte
Für zukünftige Verwendung reserviert.

Reserved[2]

Für zukünftige Verwendung reserviert.

BufferID

Gibt einen bestimmten Puffer innerhalb des Gehäusedienstprozesses an, um das Microcodeimage zu empfangen. Der Prozess der Gehäusedienste weist Puffern herstellerspezifische Puffer-ID-Codes zu (z. B. kann das Standard Firmwareimages im Puffer 00h und ein Sicherungsfirmwareimage in Puffer 01h gespeichert werden). Der Gehäusedienstprozess muss einen Puffer-ID-Wert von 00h unterstützen. Wenn mehr als ein Puffer unterstützt wird, weist der Prozess der Gehäusedienste ab 01h fortlaufend zusätzliche Puffer-ID-Codes zu. Wenn der Prozess der Gehäusedienste einen nicht unterstützten Puffer-ID-Code empfängt, wird der Vorgang zum Herunterladen von Microcode abgebrochen und das Feld Status in SES_DOWNLOAD_MICROCODE_STATUS_DESCRIPTOR auf 0x80 in der SES_DOWNLOAD_MICROCODE_STATUS_DIAGNOSTIC_PAGE-Struktur festgelegt.

BufferOffset[4]

Gibt den Offset in Bytes innerhalb des Puffers an, in den die Mikrocodedaten in Vielfaches von vier geschrieben werden. Für den Prozess der Gehäusedienste kann es erforderlich sein, dass dieses Feld in aufeinanderfolgenden SEND DIAGNOSTIC-Befehlen kontinuierlich erhöht wird.

ImageLength[4]

gibt die Gesamtanzahl von Bytes im Mikrocodeimage an, die die Anwendung an die angegebene BufferID senden möchte.

DataLength[4]

Gibt die Länge von Daten in Bytes an.

Data[ANYSIZE_ARRAY]

Enthält einen Teil des herstellerspezifischen Microcodeimages.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Verfügbar in Windows 10, Version 1709 und höher von Windows.
Kopfzeile scsi.h (einschließlich Minitape.h, Storport.h)