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;
Member
MajorFunctionCode
Gibt den IRP_MJ_XXX Hauptfunktionscode des IRP an, den der Treiber beim Auftreten des Fehlers verarbeitet hat. 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 über den ersten Versuch hinaus hinzu.
DumpDataSize
Gibt die Größe des DumpData-Members dieser Struktur mit variabler Länge in Bytes an. Der angegebene Wert muss ein Vielfaches von sizeof(ULONG) sein.
NumberOfStrings
Gibt die Anzahl der Einfügezeichenfolgen an, die der Treiber mit diesem Fehlerprotokolleintrag angibt. Treiber legen diesen Wert für Fehler, die keine Einfügezeichenfolgen erfordern, auf Null fest. Der Ereignisanzeige verwendet diese Zeichenfolgen, um die Einträge "%2" bis "%n" in der Zeichenfolgenvorlage für diesen Fehlercode auszufüllen.
Die Unicode-Zeichenfolgen mit Null-Endung selbst folgen der IO_ERROR_LOG_PACKET Struktur im Arbeitsspeicher.
StringOffset
Gibt den Offset in Bytes vom Anfang der Struktur an, an dem alle vom Treiber bereitgestellten Einfügezeichenfolgendaten beginnen. Normalerweise ist dies sizeof(IO_ERROR_LOG_PACKET) plus der Wert des DumpDataSize-Elements . Wenn keine vom Treiber bereitgestellten Einfügezeichenfolgen vorhanden sind, kann StringOffset 0 sein.
EventCategory
Gibt die Ereigniskategorie für den Fehler an. Ein Treiber gibt die 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 Description-Wert für den Fehler angezeigt werden soll. Die Ereignisanzeige übernimmt die Zeichenfolgenvorlage für den im Nachrichtenkatalog des Treibers angegebenen Fehler, 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 systemdefinierte oder vom Treiber definierte 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 die aktuelle IRP an, die für die Lebensdauer einer bestimmten Anforderung konstant sein sollte. Das Festlegen dieses Werts ist optional.
IoControlCode
Für eine IRP_MJ_DEVICE_CONTROL oder IRP_MJ_INTERNAL_DEVICE_CONTROL IRP gibt dieses Element den E/A-Steuerungscode für die Anforderung an, die den Fehler verdutzt hat. Andernfalls ist dieser Wert 0. Das Festlegen dieses Werts ist optional.
DeviceOffset
Gibt den vom Treiber angegebenen Offset auf 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 zur Identifizierung der Fehlerursache nützlich sind. Treiber müssen die Größe des Arrays in Bytes im DumpDataSize-Member dieser Struktur angeben.
Hinweise
Treiber verwenden die IoAllocateErrorLogEntry-Routine , um einen Fehlerprotokolleintrag zuzuweisen. Die IO_ERROR_LOG_PACKET-Struktur dient als Header für den zurückgegebenen Puffer. Im Arbeitsspeicher folgen 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 des Treibers. Der E/A-Manager reserviert 80 Bytes, um diese Informationen aufzunehmen. Wenn die Größe dieser Informationen 80 Bytes ü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 (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |