Grundlegendes zu erweiterten Fehlerinformationen
Erweiterte Fehlerinformationen sind ein Array von Datensätzen, die jeweils die Übergabe des Fehlercodes über eine bestimmte Ebene im System oder in der Anwendung angeben. Wenn auf einem Computer C ein Fehler auftritt, wie er von Computer B aufgerufen wird, der wiederum von Computer A aufgerufen wird, generiert die RPC-Laufzeit auf Computer C einen oder mehrere Datensätze, die den Fehler beschreiben, und übergibt sie an Computer B. Computer B kann einen oder mehrere Datensätze an die Kopfspitze der vorhandenen Kette hinzufügen. und übergibt die vollständige Kette an A. Ein kann einen oder mehrere Datensätze hinzufügen und die Informationen anzeigen oder protokollieren. Im Wesentlichen stellt die erweiterte Fehlerkette den Fehlerverlauf dar.
Erweiterte Fehlerinformationen ersetzen nicht den Fehlercode (der RPC_S_* status Code). Unabhängig davon, wie viel oder ob erweiterte Fehlerinformationen generiert werden, bleibt der Fehlercode unverändert.
Jeder erweiterte Fehlerinformationsdatensatz enthält Folgendes. Weitere Informationen finden Sie unter RPC_EXTENDED_ERROR_INFO :
ComputerName: Dies ist der nicht qualifizierte DNS-Name des Computers, auf dem der Fehler entstanden ist. Nur Datensätze auf Computergrenzen enthalten diese Informationen. In dem zuvor beschriebenen Szenario mit den Computern A, B und C ist der ComputerName beispielsweise für die folgenden Felder definiert:
Aufzeichnung (Record) ComputerName-Feld Datensatz Nr. 1, generiert von Computer C - Datensatz Nr. 2, generiert von Computer C - Datensatz Nr. 3, generiert von Computer C C Datensatz Nr. 1, generiert von Computer B - Datensatz Nr. 2, generiert von Computer B - Datensatz Nr. 3, generiert von Computer B B Datensatz Nr. 1, generiert von Computer A - Datensatz Nr. 2, generiert von Computer A - Datensatz Nr. 3, generiert von Computer A - Leiter der Kette
ProcessID: Prozessbezeichner des Prozesses, der den Fehler generiert hat.
TimeStamp: Zeitpunkt, zu dem der Fehler aufgetreten ist, ausgedrückt im UTC-Format.
Generierende Komponente: ganzzahlige Codedefinition der logischen Komponente, die den Fehler generiert hat. Die folgenden Komponenten sind derzeit definiert:
Code Name Beschreibung 1 Application Die Komponente, die die Managerroutine für den jeweiligen RPC-Aufruf besitzt 2 Typ Die RPC-Laufzeit 3 Sicherheitsanbieter Der Sicherheitsanbieter für diesen Aufruf. 4 NPFS Das NPFS-Dateisystem 5 RDR Der Redirector 6 NMP Das Named Pipe-System. Dies kann entweder NPFS oder RDR sein, aber in vielen Fällen weiß die RPC-Laufzeit nicht, wer den angeforderten Vorgang ausgeführt hat, und in solchen Fällen wird NMP zurückgegeben. 7 IO Das E/A-System oder ein Treiber, der vom E/A-System verwendet wird. Dies kann entweder NPFS, RDR oder ein Winsock-Anbieter sein. 8 Winsock Der Winsock-Anbieter 9 Authentifizierungscode Die Autorisierungs-APIs. 10 LPC Die Lokale Prozeduraufruffunktion.
- Status: Fehlercode, der von der Ebene generiert oder zurückgegeben wird
- DetectionLocation: eindeutige Zahl, die den Speicherort des Codes angibt, an dem der Fehler erkannt wurde. Dieses Feld ist an den Code gebunden und ändert sich von Version zu Version. Eine separate Liste der am häufigsten gefundenen Erkennungsorte wird veröffentlicht.
- Flags: Flags, die Informationen zum Datensatz angeben. Die derzeit definierten Flags sind EEInfoPreviousRecordsMissing und EEInfoNextRecordsMissing, die den numerischen Werten 1 bzw. 2 entsprechen. Wenn EEInfoPreviousRecordsMissing festgelegt ist, fehlen mindestens ein Datensatz vor diesem Datensatz. Wenn EEInfoNextRecordsMissing festgelegt ist, fehlen mindestens ein Datensatz nach diesem Datensatz. Eine Beschreibung, warum Datensätze möglicherweise fehlen, finden Sie unter Zuverlässigkeit erweiterter Fehlerinformationen.
- Bis zu vier Fehlerparameter. Ein Fehlerparameter ist eine einfache Variantenstruktur, die zusätzliche Informationen zum Fehler bereitstellt. Die zusätzlichen Informationen hängen vom Fehler und dem Erkennungsort ab. Die Parameter können vom Typ ANSI string (LPSTR), Unicode String (LPWSTR), long value (long), short value (short), zeiger (int64) oder none sein.