Frage

Ich weiß nicht, wo ich die besten Informationen über die Bedeutung, wahrscheinliche Ursachen und mögliche Lösungen zur Behebung von COM-Fehlern erhalten kann, wenn Sie nur das HRESULT haben.

Durch die Suche nach Google nach Begriffen wie '80004027' ist es nahezu nutzlos, da es Sie zu zufälligen Diskussionsgruppen sendet, in denen 90% der Zeit die Frage 'Was bedeutet 80004027? wird nicht beantwortet.

Was ist eine gute Ressource dafür?Warum ist MSDN nicht das beste Google-Ergebnis?

War es hilfreich?

Lösung

Ich verwende immer WinError.h.Dort gibt es die überwiegende Mehrheit der Windows-Fehlercodes aller Art.

Ein wichtiger Indikator, auf den Sie achten sollten, ist der Facility-Teil des Codes:das zweithöchste Byte.Das heißt, 0x80nnmmmm, wobei nn die Einrichtung ist.Dadurch erfahren Sie, welche Komponente den Code generiert hat.Alles mit der Funktion 7 ist ein als HRESULT neu verpackter Windows-Fehlercode, und Sie sollten das niedrige Wort in eine Dezimalzahl umwandeln und es in WinError.h nachschlagen.Es gibt auch Fehlerbereiche, die in eigenen Kopfzeilen erscheinen (z. B.Alles zwischen 12000 und 12999 ist ein WinInet-Fehlercode und Sie sollten ihn in WinInet.h nachschlagen.

Wenn Sie den Fehlercode nachschlagen, erhalten Sie den symbolischen Namen, der möglicherweise in mehr Dokumentation als dem Code selbst oder dem Wortlaut der Fehlermeldung zu finden ist.

FACILITY_ITF (mit dem Wert 4, sodass diese HRESULTs bei 0x8004 beginnen) zeigt an, dass der Fehler durch die von Ihnen verwendete Schnittstelle definiert wird.Sie müssen bei dieser Schnittstelle nachfragen, um herauszufinden, was es bedeutet.

Schließlich bietet COM auch die Schnittstelle IErrorInfo zum Abrufen erweiterter Fehlerinformationen:Rufen Sie GetErrorInfo auf, um das Fehlerobjekt abzurufen.Sie müssen nach ISupportErrorInfo fragen und die InterfaceSupportsErrorInfo-Methode dieser Schnittstelle aufrufen, um festzustellen, ob die von Ihnen aufgerufene Schnittstelle tatsächlich das Fehlerobjekt festgelegt hat (und wenn es sich um Vorlagencode handelte, könnte es natürlich lügen).

Andere Tipps

Bei der Fehlersuche (ErrLook.exe) in Ihrem Ordner %PROGRAMFILES%[Einige Versionen von Visual Studio] ools Common7\ erhalten Sie häufig, aber nicht immer, die folgende Fehlermeldung:

    |---------------------------------------------------|
    | [] Error Lookup                                   |
    |---------------------------------------------------|
    |   Value: [0x80004027]                             |
    |                                                   |
    |   Error Message                                   |
    |   +---------------------------------------------+ |
    |   |The component or application containing the  | |
    |   |component has been disabled                  | |
    |   |                                             | |
    |   +---------------------------------------------+ |
    |   [Modules...]    [Look up]    [Close]    [Help]  |
    |----------------------------------------------------

Wenn dies nicht funktioniert, können Sie einige Ideen von hier aus verfolgen:http://blogs.msdn.com/oldnewthing/archive/2008/09/01/8914664.aspx

(Fehlersuche wird einfach formatMessage () mit dem Flag format_message_from_System aufgerufen)

Wenn es sich bei dem COM-Fehler nicht um einen Systemfehler handelt, müssen Sie möglicherweise auch die Dokumentation der Komponente überprüfen, die den Fehler ausgelöst hat.

Wenn Sie den Fehler im Code erkennen, können Sie hoffen, dass die Komponente umfangreiche Fehler implementiert (GetErrorInfo(), genau wie das Err-Objekt in VB), sodass Sie eine vollständige Meldung erhalten, die das Problem beschreibt.

Guter Link von Prakash (Mir war das RCNr-Zeug nicht bekannt – ich dachte, diese Bytes wären Teil der Einrichtung – aber das gilt anscheinend nur für 16-Bit-Windows.)

Oft sind diese unbekannten Codes spezifisch für die Schnittstelle/Komponente, die Sie verwenden.Die Einrichtung würde auf FACILITY_ITF gesetzt.Ich habe ein altes Programm HRPlus (Verknüpfung?), der HRESULTs analysiert.

Struktur des COM-Fehlercodes

Zweiter in den Google-Ergebnissen für COM-Fehlercode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top