![]() |
Ereignisanzeige: Zeiger und pdword
Oh man, ich werde mit diesen Zeigern nicht warm.
Ich nutze die Methode "EvtRender" aus der wevtapi.dll zum Anzeigen der Ereignisanzeige (ab Vista). ![]()
Code:
Diese habe ich übersetzt mit
BOOL WINAPI EvtRender(
EVT_HANDLE Context, EVT_HANDLE Fragment, DWORD Flags, DWORD BufferSize, __out_bcount_part_opt(BufferSize, *BufferUsed) PVOID Buffer, __out PDWORD BufferUsed, __out PDWORD PropertyCount );
Code:
Und aufrufen tue ich sie so (Fragment liegt mir vor):
type
PEvtHandle = ^TEvtHandle; TEvtHandle = type THandle; function EvtRender( Context, Fragment:TEvtHandle; Flags:dword; BufferSize:dword; Buffer:Pointer; out BufferUsed:pdword; out PropertyCount: pdword):bool; stdcall;
Code:
Manchmal, aber nicht immer, stürzt mein Programm dabei ab.
function UnicodePointerToString(P:Pointer; Size:integer):string;
var Address, i: integer; begin Address := Integer(P); Result:=''; for i:=0 to Size-1 do if i mod 2 = 0 then Result:=Result + Chr(PByte(Ptr(Address + i))^); end; const EvtRenderEventValues=0; EvtRenderEventXml=1; EvtRenderBookmark=2; BufferSize=8192; var pdBufferUsed, pdPropertyCount: pdword; Buffer:Pointer; GetMem(Buffer, BufferSize); Result:=WinEvt.EvtRender(0, Fragment, EvtRenderEventXml, BufferSize, Buffer, pdBufferUsed, pdPropertyCount); xml:=UnicodePointerToString(Buffer, Integer(pdBufferUsed)); FreeMem(Buffer); Muss ich für Variablen pdBufferUsed und pdPropertyCount mit New oder GetMem Speicher reservieren? Habe ich die Funktion so richtig übersetzt und aufgerufen? |
AW: Ereignisanzeige: Zeiger und pdword
Ich bin nicht sicher, aber klappt es so?
Delphi-Quellcode:
pdBufferUsed und pdPropertyCount dann entsprechend als DWORD deklarieren.
function EvtRender(
Context, Fragment:TEvtHandle; Flags:dword; BufferSize:dword; Buffer:Pointer; out BufferUsed, PropertyCount: DWORD):bool; stdcall; |
AW: Ereignisanzeige: Zeiger und pdword
Ja, du hast recht, ich muss gar nicht pdword nehmen.
Jetzt wird mir vieles klarer. Vielen Dank. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz