Freigeben über


IO_ERROR_LOG_PACKET Struktur (wdm.h)

Die IO_ERROR_LOG_PACKET-Struktur dient als Header für einen Fehlerprotokolleintrag.

Syntax

typedef struct _IO_ERROR_LOG_PACKET {
  UCHAR         MajorFunctionCode;
  UCHAR         RetryCount;
  USHORT        DumpDataSize;
  USHORT        NumberOfStrings;
  USHORT        StringOffset;
  USHORT        EventCategory;
  NTSTATUS      ErrorCode;
  ULONG         UniqueErrorValue;
  NTSTATUS      FinalStatus;
  ULONG         SequenceNumber;
  ULONG         IoControlCode;
  LARGE_INTEGER DeviceOffset;
  ULONG         DumpData[1];
} IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;

Angehörige

MajorFunctionCode

Gibt den IRP_MJ_XXX- Hauptfunktionscode des IRP an, der beim Auftreten des Fehlers behandelt wurde. Das Festlegen dieses Werts ist optional.

RetryCount

Gibt an, wie oft der Treiber den Vorgang wiederholt hat und dieser Fehler aufgetreten ist. Verwenden Sie Null, um anzugeben, dass der Treiber den Vorgang einmal versucht hat, oder fügen Sie einen für jeden Wiederholungsversuch hinzu, der über den anfänglichen Versuch hinausgeht.

DumpDataSize

Gibt die Größe der Variablenlänge DumpData- Member dieser Struktur in Byte an. Der angegebene Wert muss ein Vielfaches Größe von(ULONG) sein.

NumberOfStrings

Gibt die Anzahl der Einfügezeichenfolgen an, die der Treiber mit diesem Fehlerprotokolleintrag liefert. Treiber legen diesen Wert für Fehler, die keine Einfügezeichenfolgen benötigen, auf Null fest. Die Ereignisanzeige verwendet diese Zeichenfolgen, um die "%2" bis "%n" Einträge in der Zeichenfolgenvorlage für diesen Fehlercode auszufüllen.

Die mit Null beendeten Unicode-Zeichenfolgen selbst folgen der IO_ERROR_LOG_PACKET Struktur im Arbeitsspeicher.

StringOffset

Gibt den Offset in Bytes vom Anfang der Struktur an, bei dem alle vom Treiber bereitgestellten Einfügezeichenfolgendaten beginnen. Normalerweise wird dies Größe(IO_ERROR_LOG_PACKET) plus den Wert des DumpDataSize Members sein. Wenn keine vom Treiber bereitgestellten Einfügezeichenfolgen vorhanden sind, kann StringOffset- null sein.

EventCategory

Gibt die Ereigniskategorie für den Fehler an. Ein Treiber gibt die von ihm unterstützten Ereigniskategorien und die entsprechenden beschreibenden Zeichenfolgen im Nachrichtenkatalog an. Die Ereignisanzeige zeigt die beschreibende Zeichenfolge als Category Wert für den Fehler an.

ErrorCode

Gibt den Typ des Fehlers an. Die Ereignisanzeige verwendet den Fehlercode, um zu bestimmen, welche Zeichenfolge als Beschreibungswert für den Fehler angezeigt werden soll. Die Ereignisanzeige verwendet die Zeichenfolgenvorlage für den fehler, der im Nachrichtenkatalog des Treibers angegeben wird, ersetzt "%1" in der Vorlage durch den Namen des Geräteobjekts des Treibers und ersetzt "%2" bis "%n" durch die Einfügezeichenfolgen, die mit dem Fehlerprotokolleintrag angegeben werden.

ErrorCode- ist eine vom System definierte oder treiberdefinierte Konstante; weitere Informationen finden Sie unter Protokollierungsfehler.

UniqueErrorValue

Ein treiberspezifischer Wert, der angibt, wo der Fehler im Treiber erkannt wurde. Das Festlegen dieses Werts ist optional.

FinalStatus

Gibt den NTSTATUS-Wert an, der für den Vorgang zurückgegeben werden soll, der den Fehler ausgelöst hat. Das Festlegen dieses Werts ist optional.

SequenceNumber

Gibt eine vom Treiber zugewiesene Sequenznummer für den aktuellen IRP an, die für die Lebensdauer einer bestimmten Anforderung konstant sein soll. Das Festlegen dieses Werts ist optional.

IoControlCode

Bei einem IRP_MJ_DEVICE_CONTROL oder IRP_MJ_INTERNAL_DEVICE_CONTROL IRP gibt dieses Element den I/O-Steuerelementcode für die Anforderung an, die den Fehler triggte. Andernfalls ist dieser Wert null. Das Festlegen dieses Werts ist optional.

DeviceOffset

Gibt den vom Treiber angegebenen Offset in das Gerät an, auf dem der Fehler aufgetreten ist. Das Festlegen dieses Werts ist optional.

DumpData[1]

Ein Array mit variabler Größe, das zum Speichern treiberspezifischer Binärdaten verwendet werden kann, z. B. Registerwerte oder andere Informationen, die bei der Identifizierung der Ursache des Fehlers nützlich sind. Treiber müssen die Größe des Arrays in Byte im DumpDataSize Member dieser Struktur angeben.

Bemerkungen

Treiber verwenden die IoAllocateErrorLogEntry Routine, um einen Fehlerprotokolleintrag zuzuweisen. Die IO_ERROR_LOG_PACKET-Struktur dient als Header für den zurückgegebenen Puffer. Es folgt im Arbeitsspeicher durch alle Einfügezeichenfolgen für den Protokolleintrag.

Beachten Sie, dass der E/A-Manager selbst einige Informationen in das Systemfehlerprotokoll einfügt, z. B. den Namen des Geräts und treibers. Der E/A-Manager reserviert 80 Byte, um diese Informationen zu enthalten. Wenn die Größe dieser Informationen 80 Byte überschreitet, schneidet der E/A-Manager die Einfügezeichenfolgen des Treibers nach Bedarf ab.

Weitere Informationen zur Verwendung dieser Struktur finden Sie unter Protokollierungsfehler.

Anforderungen

Anforderung Wert
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)

Siehe auch

IRP_MJ_DEVICE_CONTROL

IRP_MJ_INTERNAL_DEVICE_CONTROL

IoAllocateErrorLogEntry-

IoFreeErrorLogEntry-

IoWriteErrorLogEntry-