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) |