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 Ereigniseinträge anzeigen lassen (https://www.delphipraxis.net/17062-ereigniseintraege-anzeigen-lassen.html)

Captnemo 27. Feb 2004 17:11


Ereigniseinträge anzeigen lassen
 
Hi,

ich versuche mich gerade mehr oder weniger erfolgreich an der Ereignisanzeige :coder:

Klappt auch soweit, ich kann den EventLogRecord auslesen. Darin enthalten sind ja auch
- StringOffset
- UserSidLength
- UserSidOffset
- DataLength
- DataOffset
Auch die Auszulesen bekommen ich problemlos hin.
Aber ich will auch an:
- SourceName
- ComputerName
- UserSid
- Strings
- Data

Ich finde jetzt aber irgendwie keinen Hinweis, wie ich darauf zugreifen soll. Im EventLogRecord sind ja nur die Offsets und die Längen definiert.

Kann mir mal einer auf die Sprünge helfen, ich raffs nich.

mfg
captnemo

Chewie 27. Feb 2004 17:14

Re: Ereigniseinträge anzeigen lassen
 
Ein Teil steckt doch in dem Record drin. Lies dir mal die Seite im PSDK durch, falls du das noch nicht getan haben solltest.

Captnemo 27. Feb 2004 17:51

Re: Ereigniseinträge anzeigen lassen
 
Hab ich :-)
Aber dass das in dem Record mit drin ist, hab ich gar nicht so rausgelesen. Aber jetzt wo du's sagst, macht natürlich sinn :mrgreen:

Aber wie greife ich zu? Schließlich habe ich z.B. SourceName in der meinem Record-Type gar nicht drin?

Chewie 27. Feb 2004 18:10

Re: Ereigniseinträge anzeigen lassen
 
Wenn Borland den Record so nicht übersetzt hat, dann wirst du ihn wohl ausgehende vom Aufbau im PSDK übersetzen müssen.

Ach so, zu SourceName steht was in den Anmerkungen.

Captnemo 27. Feb 2004 20:09

Re: Ereigniseinträge anzeigen lassen
 
@chewie:
Is klar, aber genau das ist mein Problem. Den Text vom SDK hab ich mir schon durch gelesen.
Ich hab aber nicht verstanden, wie ich jetzt SourceName oder Data auslesen soll.

Muß ich das in der Typendeklaration erst definieren? Geht ja eigentlich gar nicht anders. Aber ich weiß nicht genau wie ich diese Type deklarieren soll, bzw. wie ich die dann auslesen kann?

Chewie 27. Feb 2004 20:29

Re: Ereigniseinträge anzeigen lassen
 
SourceName steht nicht direkt drin, aber Data schon. Du hast die Länge des Data-Blocks (DataLength) und die Speicherposition (DataOffset). Ich weiß jetzt nur nicht, ob diese Adresse absolut ist oder relativ zum Beginn des Records. Herausfinden könnt man es, indem man diese Adresse mit der Adresse des Records vergleicht. Ist erstere Adresse sehr klein (kleiner 100 oder so), handelt es sich wohl um eine relative Adresse. Ansonsten handelt es sich wohl um eine absolute. Evtl. ein paar mal probieren, um Sicherheit zu erhalten.
Wenn du die Adresse hast, brauchst du ne Variable, der du den Kram zuweisen kannst, möglicherweise ein Array of Byte. Dessen Startadresse setzt du auf die oben herausgefundene Speicherposition - et voilà, du hast den Datenblock als Array.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:59 Uhr.

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