Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi wuApi.dll ErrorCodes (https://www.delphipraxis.net/121004-wuapi-dll-errorcodes.html)

stOrM 20. Sep 2008 14:25


wuApi.dll ErrorCodes
 
Hi,
ich hab mal folgende Frage, ich schreib grad ein kleines Demo, welches auf die Windows Update Agent Api zugreift und es halt ermöglicht, nach Updates zu suchen, diese herunterzuladen und oder zu installieren.

Nun würde ich gerne, wenn es z.B. zu einem OleSysError kommt, mir den Event, die Fehlerbeschreibung und den Fehlercode in ein sep. Tree wegschreiben (ne art DebugTree, für das Demo)

Problem 1:
Die Fehlercodes, der wua sind leider nirgends mehr zu finden, ausser in einem alten SDK (Windows 2003, wuerror.h)
Deshalb kann ich leider die Fehler, Beschreibungen usw nicht extrahieren.
Im "neuen" SDK gibt es das nicht mehr.

Frage:
Ich suche jetzt eine Möglichkeit, oder sagen wir die beste Möglichkeit, um wie oben Beschrieben, die Fehlermeldungen mit Beschreibung wegschreiben zu können, ins besagte Tree...
Es gab bei mir mehrere Ansätze, z.B. eigene MessageTable erstellen (mc.exe usw...)
Fehlerklasse erstellen?

Ich hab mal, von der MSDN Seite, alle Codes mit Beschreibung in eine Datei geschrieben, ein Auszug:

Result String Result Code Description
WU_S_SERVICE_STOP = $240001; // Windows Update Agent was stopped successfully.

Naja vielleicht hat jemand eine Idee dazu, bin für alles offen...

Viele Grüsse
s!

stOrM 22. Sep 2008 20:11

Re: wuApi.dll ErrorCodes
 
*push*

sx2008 22. Sep 2008 22:28

Re: wuApi.dll ErrorCodes
 
Untersuche mal die JEDI API Windows Headers (JWAPI). Vielleicht steckt da ja was drin.

stOrM 22. Sep 2008 23:19

Re: wuApi.dll ErrorCodes
 
Leider nicht sonst hätte Chris mir das bereits mitgeteilt :-)

Gruß
s!

sx2008 23. Sep 2008 03:51

Re: wuApi.dll ErrorCodes
 
Ich hab' mir mal die DLL wuapi.dll angeschaut; das ist doch eine ActiveX DLL!!
Man braucht doch nur die TLB importieren und hat alles was man braucht :-)
Einfach die "WUAPI 2.0 Type Library" importieren und alle Konstanten, Interfaces und CoKlassen sind verfügbar.

stOrM 23. Sep 2008 12:00

Re: wuApi.dll ErrorCodes
 
Hehehe, hast du die mal importiert und Dir den Inhalt mal angesehen? Da gibts keine Fehlercodes drin!
Ich arbeite mit der TLB, sorry hatte ich nicht erwähnt.

Grob geschätzt gibt es zu der Api ca. 200 Fehlerconstanten und die sind leider nicht auffindbar.
Ich versuchs nochmal anders zu erklären:

Am liebsten wäre mir folgendes:

Man baut eine DLL, die enthält als Resource:

1. Fehlercode z.b. $8024F001
2. Fehlertype z.b. WU_E_REPORTER_EVENTCACHECORRUPT
3. Fehlerbeschreibung z.b. The event cache file was defective.

Jetzt sagen wir mal passiert folgendes:
In der Anwendung wird eine Suchanfrage nach Updates gestartet, jetzt kommt es z.B. zu einem OleSysError, man müsste sich den E.ErrorCode nun nehmen, und mit denen in der Resource.DLL vergleichen lassen, sollte dieser innerhalb der DLL gefunden werden,
müsste eine Function nun:

1. Den Fehlertype extrahieren und die Beschreibung dazu, so das ich nun diese 3 Sachen, Fehlercode, Fehlertype ssowie
Beschreibung in mein Tree wegschreiben könnte.

Nur wie wirds gemacht mit der DLL und dem Extrahieren?

Gruß
s!

Alter Mann 23. Sep 2008 19:32

Re: wuApi.dll ErrorCodes
 
Hi stOrM

mal ehrlich, so richtig verstehe ich deine Frage nicht.

Rekapitulieren wir:

WSUS-Demo Stand ?

Ab WSUS 2.0 = DotNet 2.0, ab WSUS 3.0 = DotNet 3.0.
ErrorCodes = (Zusammengefasst == Fehlanzeige)

Richtig?

wuerror.h = SDK v5.0, danach Empty.

Richtig?

Falls beide Fragen mit Ja beantwortet werden und du so etwas wie
Visual Express C#, VB, C++ oder das aktuelle SDK hast, schau
unter WSUS in der Dokumentation nach und such dir (leider) die Werte zusammen.
Etwas Fertiges wird dir bei diesem Thema kaum einer liefern können.

Andererseits: Mache es OpenSource, suche dir ein paar Verbündete und füge
es dem JEDI-Projekt hinzu, ob als Demo oder Designstudie, wie belieben.

So, habe nochmals den letzten Beitrag gelesen: Irgendwo in der DP tauchte die Frage
auf wie man eine DotNet-Framework-DLL in eine Delphi-Anwendung einbinden kann(ohne das Ergebnis zu kennen),
wenn dies geht wozu eine eigene 'DLL'?, ist doch schon alles in 'MICROSOFT.UPDATESERVICES.ADMINISTRATION' enthalten.

Beste Grüsse und viel Erfolg

Alter Mann

stOrM 25. Sep 2008 19:19

Re: wuApi.dll ErrorCodes
 
Zitat:

Zitat von Alter Mann
Hi stOrM

mal ehrlich, so richtig verstehe ich deine Frage nicht.

Rekapitulieren wir:

WSUS-Demo Stand ?

Ab WSUS 2.0 = DotNet 2.0, ab WSUS 3.0 = DotNet 3.0.
ErrorCodes = (Zusammengefasst == Fehlanzeige)

Richtig?

wuerror.h = SDK v5.0, danach Empty.

Richtig?

Falls beide Fragen mit Ja beantwortet werden und du so etwas wie
Visual Express C#, VB, C++ oder das aktuelle SDK hast, schau
unter WSUS in der Dokumentation nach und such dir (leider) die Werte zusammen.
Etwas Fertiges wird dir bei diesem Thema kaum einer liefern können.

Andererseits: Mache es OpenSource, suche dir ein paar Verbündete und füge
es dem JEDI-Projekt hinzu, ob als Demo oder Designstudie, wie belieben.

So, habe nochmals den letzten Beitrag gelesen: Irgendwo in der DP tauchte die Frage
auf wie man eine DotNet-Framework-DLL in eine Delphi-Anwendung einbinden kann(ohne das Ergebnis zu kennen),
wenn dies geht wozu eine eigene 'DLL'?, ist doch schon alles in 'MICROSOFT.UPDATESERVICES.ADMINISTRATION' enthalten.

Beste Grüsse und viel Erfolg

Alter Mann

Hallo Alter Mann,
ich dachte meine Frage, wäre diesmal leichter zu verstehen.

Du hast es ja eigentlich auch richtig vestanden, die Fehlercodes und deren Beschreibungen, hab ich mir leider schon zusammensuchen müssen.

Der Grund für eine eigene DLL wäre dieser gewesen:

Punkt1.
Ich wollte darin, als MessageTable die Fehlercodes zuwie die Beschreibungen dazu als Resource in der DLL speichern um dann später über
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER...... .

usw. diese dann wieder zu extrahieren, so hätte ich eventuell auch das Eventlog benutzen können von Windows...

Punkt2.
Das Demo ist für Jedi und bereits fast fertig, es geht halt nur um eine saubere Lösung, dass man halt beim Olesyserror, anhand des Errocodes dem User eine Beschreibung dazu liefern kann.

Im Moment benutz ich halt Konstanten und ein Array...

Gruß
s!


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf