Created
August 4, 2021 21:45
-
-
Save CynicRus/ddc3995dc904731be32ed00c4f8fe2ea to your computer and use it in GitHub Desktop.
winevt_h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
unit winevt_h; | |
{$ifdef FPC} | |
{$mode objfpc}{$H+} | |
{$EndIF} | |
interface | |
uses | |
Classes, SysUtils, Windows; | |
//https://msdn.microsoft.com/en-us/library/windows/desktop/aa385785%28v=vs.85%29.aspx | |
const | |
winevt = 'wevtapi.dll'; | |
EVT_VARIANT_TYPE_MASK = $7f; | |
EVT_VARIANT_TYPE_ARRAY = 128; | |
EVT_READ_ACCESS = $1; | |
EVT_WRITE_ACCESS = $2; | |
EVT_CLEAR_ACCESS = $4; | |
EVT_ALL_ACCESS = $7; | |
type | |
EVT_HANDLE = THandle; | |
PEVT_HANDLE = ^Handle; | |
EVT_OBJECT_ARRAY_PROPERTY_HANDLE = THandle; | |
EVT_CHANNEL_CLOCK_TYPE = (EvtChannelClockTypeSystemTime = 0, | |
EvtChannelClockTypeQPC = 1); | |
EVT_CHANNEL_CONFIG_PROPERTY_ID = (EvtChannelConfigEnabled = 0, | |
EvtChannelConfigIsolation = 1, | |
EvtChannelConfigType = 2, | |
EvtChannelConfigOwningPublisher = 3, | |
EvtChannelConfigClassicEventlog = 4, | |
EvtChannelConfigAccess = 5, | |
EvtChannelLoggingConfigRetention = 6, | |
EvtChannelLoggingConfigAutoBackup = 7, | |
EvtChannelLoggingConfigMaxSize = 8, | |
EvtChannelLoggingConfigLogFilePath = 9, | |
EvtChannelPublishingConfigLevel = 10, | |
EvtChannelPublishingConfigKeywords = 11, | |
EvtChannelPublishingConfigControlGuid = 12, | |
EvtChannelPublishingConfigBufferSize = 13, | |
EvtChannelPublishingConfigMinBuffers = 14, | |
EvtChannelPublishingConfigMaxBuffers = 15, | |
EvtChannelPublishingConfigLatency = 16, | |
EvtChannelPublishingConfigClockType = 17, | |
EvtChannelPublishingConfigSidType = 18, | |
EvtChannelPublisherList = 19, | |
EvtChannelPublishingConfigFileMax = 20, | |
EvtChannelConfigPropertyIdEND = 21); | |
EVT_CHANNEL_ISOLATION_TYPE = (EvtChannelIsolationTypeApplication = 0, | |
EvtChannelIsolationTypeSystem = 1, | |
EvtChannelIsolationTypeCustom = 2); | |
EVT_CHANNEL_REFERENCE_FLAGS = (EvtChannelReferenceImported = $1); | |
EVT_CHANNEL_SID_TYPE = (EvtChannelSidTypeNone = 0, | |
EvtChannelSidTypePublishing = 1); | |
EVT_CHANNEL_TYPE = (EvtChannelTypeAdmin = 0, | |
EvtChannelTypeOperational = 1, | |
EvtChannelTypeAnalytic = 2, | |
EvtChannelTypeDebug = 3); | |
EVT_EVENT_METADATA_PROPERTY_ID = (EventMetadataEventID = 0, | |
EventMetadataEventVersion = 1, | |
EventMetadataEventChannel = 2, | |
EventMetadataEventLevel = 3, | |
EventMetadataEventOpcode = 4, | |
EventMetadataEventTask = 5, | |
EventMetadataEventKeyword = 6, | |
EventMetadataEventMessageID = 7, | |
EventMetadataEventTemplate = 8, | |
EvtEventMetadataPropertyIdEND = 9); | |
EVT_EVENT_PROPERTY_ID = (EvtEventQueryIDs = 0, | |
EvtEventPath = 1, | |
EvtEventPropertyIdEND = 2); | |
EVT_EXPORTLOG_FLAGS = (EvtExportLogChannelPath = $1, | |
EvtExportLogFilePath = $2, | |
EvtExportLogTolerateQueryErrors = $1000); | |
EVT_FORMAT_MESSAGE_FLAGS = (EvtFormatMessageEvent = 1, | |
EvtFormatMessageLevel = 2, | |
EvtFormatMessageTask = 3, | |
EvtFormatMessageOpcode = 4, | |
EvtFormatMessageKeyword = 5, | |
EvtFormatMessageChannel = 6, | |
EvtFormatMessageProvider = 7, | |
EvtFormatMessageId = 8, | |
EvtFormatMessageXml = 9); | |
EVT_LOG_PROPERTY_ID = (EvtLogCreationTime = 0, | |
EvtLogLastAccessTime = 1, | |
EvtLogLastWriteTime = 2, | |
EvtLogFileSize = 3, | |
EvtLogAttributes = 4, | |
EvtLogNumberOfLogRecords = 5, | |
EvtLogOldestRecordNumber = 6, | |
EvtLogFull = 7); | |
EVT_LOGIN_CLASS = (EvtRpcLogin = 1); | |
EVT_OPEN_LOG_FLAGS = (EvtOpenChannelPath = $1, | |
EvtOpenFilePath = $2); | |
EVT_PUBLISHER_METADATA_PROPERTY_ID = | |
(EvtPublisherMetadataPublisherGuid = 0, | |
EvtPublisherMetadataResourceFilePath, | |
EvtPublisherMetadataParameterFilePath, | |
EvtPublisherMetadataMessageFilePath, | |
EvtPublisherMetadataHelpLink, | |
EvtPublisherMetadataPublisherMessageID, | |
EvtPublisherMetadataChannelReferences, | |
EvtPublisherMetadataChannelReferencePath, | |
EvtPublisherMetadataChannelReferenceIndex, | |
EvtPublisherMetadataChannelReferenceID, | |
EvtPublisherMetadataChannelReferenceFlags, | |
EvtPublisherMetadataChannelReferenceMessageID, | |
EvtPublisherMetadataLevels, | |
EvtPublisherMetadataLevelName, | |
EvtPublisherMetadataLevelValue, | |
EvtPublisherMetadataLevelMessageID, | |
EvtPublisherMetadataTasks, | |
EvtPublisherMetadataTaskName, | |
EvtPublisherMetadataTaskEventGuid, | |
EvtPublisherMetadataTaskValue, | |
EvtPublisherMetadataTaskMessageID, | |
EvtPublisherMetadataOpcodes, | |
EvtPublisherMetadataOpcodeName, | |
EvtPublisherMetadataOpcodeValue, | |
EvtPublisherMetadataOpcodeMessageID, | |
EvtPublisherMetadataKeywords, | |
EvtPublisherMetadataKeywordName, | |
EvtPublisherMetadataKeywordValue, | |
EvtPublisherMetadataKeywordMessageID, | |
EvtPublisherMetadataPropertyIdEND); | |
EVT_QUERY_FLAGS = (EvtQueryChannelPath = $1, | |
EvtQueryFilePath = $2, | |
EvtQueryForwardDirection = $100, | |
EvtQueryReverseDirection = $200, | |
EvtQueryTolerateQueryErrors = $1000); | |
EVT_QUERY_PROPERTY_ID = (EvtQueryNames = 0, | |
EvtQueryStatuses = 1, | |
EvtQueryPropertyIdEND = 2); | |
EVT_RENDER_CONTEXT_FLAGS = (EvtRenderContextValues = 0, | |
EvtRenderContextSystem = 1, | |
EvtRenderContextUser = 2); | |
EVT_RENDER_FLAGS = (EvtRenderEventValues = 0, | |
EvtRenderEventXml = 1, | |
EvtRenderBookmark = 2); | |
EVT_RPC_LOGIN_FLAGS = (EvtRpcLoginAuthDefault = 0, | |
EvtRpcLoginAuthNegotiate = 1, | |
EvtRpcLoginAuthKerberos = 2, | |
EvtRpcLoginAuthNTLM = 3); | |
EVT_SEEK_FLAGS = (EvtSeekRelativeToFirst = 1, | |
EvtSeekRelativeToLast = 2, | |
EvtSeekRelativeToCurrent = 3, | |
EvtSeekRelativeToBookmark = 4, | |
EvtSeekOriginMask = 7, | |
EvtSeekStrict = $10000); | |
EVT_SUBSCRIBE_FLAGS = (EvtSubscribeToFutureEvents = 1, | |
EvtSubscribeStartAtOldestRecord = 2, | |
EvtSubscribeStartAfterBookmark = 3, | |
EvtSubscribeOriginMask = $3, | |
EvtSubscribeTolerateQueryErrors = $1000, | |
EvtSubscribeStrict = $10000); | |
EVT_SUBSCRIBE_NOTIFY_ACTION = (EvtSubscribeActionError = 0, | |
EvtSubscribeActionDeliver = 1); | |
EVT_SYSTEM_PROPERTY_ID = (EvtSystemProviderName = 0, | |
EvtSystemProviderGuid, | |
EvtSystemEventID, | |
EvtSystemQualifiers, | |
EvtSystemLevel, | |
EvtSystemTask, | |
EvtSystemOpcode, | |
EvtSystemKeywords, | |
EvtSystemTimeCreated, | |
EvtSystemEventRecordId, | |
EvtSystemActivityID, | |
EvtSystemRelatedActivityID, | |
EvtSystemProcessID, | |
EvtSystemThreadID, | |
EvtSystemChannel, | |
EvtSystemComputer, | |
EvtSystemUserID, | |
EvtSystemVersion, | |
EvtSystemPropertyIdEND); | |
EVT_VARIANT_TYPE = (EvtVarTypeNull = 0, | |
EvtVarTypeString = 1, | |
EvtVarTypeAnsiString = 2, | |
EvtVarTypeSByte = 3, | |
EvtVarTypeByte = 4, | |
EvtVarTypeInt16 = 5, | |
EvtVarTypeUInt16 = 6, | |
EvtVarTypeInt32 = 7, | |
EvtVarTypeUInt32 = 8, | |
EvtVarTypeInt64 = 9, | |
EvtVarTypeUInt64 = 10, | |
EvtVarTypeSingle = 11, | |
EvtVarTypeDouble = 12, | |
EvtVarTypeBoolean = 13, | |
EvtVarTypeBinary = 14, | |
EvtVarTypeGuid = 15, | |
EvtVarTypeSizeT = 16, | |
EvtVarTypeFileTime = 17, | |
EvtVarTypeSysTime = 18, | |
EvtVarTypeSid = 19, | |
EvtVarTypeHexInt32 = 20, | |
EvtVarTypeHexInt64 = 21, | |
EvtVarTypeEvtHandle = 32, | |
EvtVarTypeEvtXml = 35); | |
TEvtRPCLogin = record | |
Server: PWideChar; | |
User: PWideChar; | |
Domain: PWideChar; | |
Password: PWideChar; | |
Flags: PWideChar; | |
end; | |
{$packrecords C} | |
type TEvtVariant = record | |
Union: record | |
case dword of | |
0: (BooleanVal: boolean); | |
1: (SByteVal: Int8); | |
2: (Int16Val: int16); | |
3: (Int32Val: int32); | |
4: (Int64Val: int64); | |
5: (ByteVal: UInt8); | |
6: (UInt16Val: UInt16); | |
7: (UInt32Val: UInt32); | |
8: (UInt64Val: UInt64); | |
9: (SingleVal: single); | |
10: (DoubleVal: double); | |
11: (FileTimeVal: ULONGLONG); | |
12: (SysTimeVal: ^SYSTEMTIME); | |
13: (GuidVal: ^GUID); | |
14: (StringVal: PWideChar); | |
15: (AnsiStringVal: PChar); | |
16: (BinaryVal: PByte); | |
17: (SidVal: PSid); | |
18: (SizeTVal: size_t); | |
19: (EvtHandleVal: EVT_HANDLE); | |
20: (BooleanArr: PBoolean); | |
21: (SByteArr: PByte); | |
22: (Int16Arr: ^int16); | |
23: (Int32Arr: ^int32); | |
24: (Int64Arr: ^int64); | |
25: (ByteArr: PByte); | |
26: (UInt16Arr: ^UInt16); | |
27: (UInt32Arr: ^Uint32); | |
28: (UInt64Arr: ^Uint64); | |
29: (SingleArr: ^single); | |
30: (DoubleArr: ^double); | |
31: (FileTimeArr: ^FileTime); | |
32: (SysTimeArr: ^SystemTime); | |
33: (GuidArr: ^GUID); | |
34: (StringArr: ^PWideChar); | |
35: (AnsiStringArr: ^PChar); | |
36: (SidArr: ^PSid); | |
37: (SizeTArr: ^Size_T); | |
38: (XmlVal: PwideChar); | |
39: (XmlValArr: ^PWideChar); | |
end; | |
Count: Dword; | |
vType: EVT_VARIANT_TYPE; | |
end; | |
PEVT_VARIANT = ^TEvtVariant; | |
EVT_SUBSCRIBE_CALLBACK = function(Action: EVT_SUBSCRIBE_NOTIFY_ACTION; | |
UserContext: Pointer; Event: EVT_HANDLE): dword; stdcall; | |
function EvtArchiveExportedLog(Session: EVT_HANDLE; LogFilePath: PWideChar; | |
Locale: LCID; Flags: DWORD): boolean; stdcall; external winevt; | |
function EvtCancel(Obj: EVT_HANDLE): boolean; stdcall; external winevt; | |
function EvtClearLog(Session: EVT_HANDLE; ChannelPath: PwideChar; | |
TargetFilePath: PWideChar; Flags: DWORD): boolean; stdcall; external winevt; | |
function EvtClose(Obj: EVT_HANDLE): boolean; stdcall; external winevt; | |
function EvtCreateBookmark(BookmarkXML: PWideChar): boolean; stdcall; external winevt; | |
function EvtCreateRenderContext(ValuePathsCount: dword; ValuePaths: PPWideChar; | |
Flags: EVT_RENDER_CONTEXT_FLAGS): EVT_HANDLE; stdcall; external winevt; | |
function EvtExportLog(Session: EVT_HANDLE; Path, Query, TargetFilePath: PWideChar; | |
Flags: EVT_EXPORTLOG_FLAGS): boolean; stdcall; external winevt; | |
function EvtFormatMessage(PublisherMetadata, Event: EVT_HANDLE; | |
MessageID, ValueCount: dword; Values: PEVT_Variant; Flags, BufferSize: dword; | |
Buffer: PWideChar; BufferUsed: dword): boolean; stdcall; external winevt; | |
function EvtGetChannelConfigProperty(ChannelConfig: EVT_HANDLE; | |
PropertyID: EVT_CHANNEL_CONFIG_PROPERTY_ID; Flags, PropertyValueBufferSize: dword; | |
PropertyValueBuffer: PEVT_Variant; PropertyValueBufferUsed: Dword): boolean; | |
stdcall; external winevt; | |
function EvtGetEventInfo(Event: EVT_HANDLE; PropertyId: EVT_EVENT_PROPERTY_ID; | |
PropertyValueBufferSize: dword; PropertyValueBuffer: PEVT_Variant; | |
PropertyValueBufferUsed: Dword): boolean; stdcall; external winevt; | |
function EvtGetEventMetadataProperty(EventMetadata: EVT_HANDLE; | |
PropertyId: EVT_EVENT_METADATA_PROPERTY_ID; EventMetadataPropertyValueBufferSize: dword; | |
EventMetadataPropertyValueBuffer: PEVT_Variant; | |
EventMetadataPropertyValueBufferUsed: Dword): boolean; stdcall; external winevt; | |
function EvtGetExtendedStatus(BufferSize: Dword; Buffer: PWideChar; | |
BufferUsed: dword): dword; stdcall; external winevt; | |
function EvtGetLogInfo(Log: EVT_HANDLE; PropertyID: EVT_LOG_PROPERTY_ID; | |
PropertyValueBufferSize: dword; PropertyValueBuffer: PEVT_Variant; | |
PropertyValueBufferUsed: dword): boolean; stdcall; external winevt; | |
function EvtGetObjectArrayProperty(ObjArray: EVT_OBJECT_ARRAY_PROPERTY_HANDLE; | |
PropertyID, ArrayIndex, Flags: dword; PropertyValueBufferSize: dword; | |
PropertyValueBuffer: PEVT_Variant; PropertyValueBufferUsed: dword): boolean; | |
stdcall; external winevt; | |
function EvtGetObjectArraySize(ObjArray: EVT_OBJECT_ARRAY_PROPERTY_HANDLE; | |
ObjArraySize: Dword): boolean; stdcall; external winevt; | |
function EvtGetPublisherMetadataProperty(PublisherMetadata: EVT_HANDLE; | |
PropertyId: EVT_PUBLISHER_METADATA_PROPERTY_ID; | |
Flags, PublisherEventMetadataPropertyValueBufferSize: dword; | |
PublisherEventMetadataPropertyValueBuffer: PEVT_Variant; | |
PublisherEventMetadataPropertyValueBufferUsed: Dword): boolean; stdcall; external winevt; | |
function EvtGetQueryInfo(QueryOrSubscription: EVT_HANDLE; | |
PropertyID: EVT_QUERY_PROPERTY_ID; PropertyValueBufferSize: dword; | |
PropertyValueBuffer: PEVT_Variant; PropertyValueBufferUsed: dword): boolean; | |
stdcall; external winevt; | |
function EvtNext(ResultSet: EVT_HANDLE; EventArraySize: dword; | |
EventArray: PEVT_Handle; Timeout, Flags: dword; Returned: PDword): boolean; | |
stdcall; external winevt; | |
function EvtNextChannelPath(ChannelEnum: EVT_HANDLE; | |
ChannelPathValueBufferSize: dword; ChannelPathValueBuffer: PEVT_Variant; | |
ChannelPathBufferUsed: dword): boolean; stdcall; external winevt; | |
function EvtNextEventMetadata(EventMetadataEnum: EVT_HANDLE; Flags: dword): boolean; | |
stdcall; external winevt; | |
function EvtNextPublisherId(PublisherId: EVT_HANDLE; PublisherIdBufferSize: dword; | |
PublisherIdBuffer: PEVT_Variant; PublisherIdBufferUsed: dword): boolean; | |
stdcall; external winevt; | |
function EvtOpenChannelConfig(Session: EVT_HANDLE; ChannelPath: PwideChar; | |
Flags: dword): EVT_HANDLE; stdcall; external winevt; | |
function EvtOpenChannelEnum(Session: EVT_HANDLE; Flags: dword): EVT_HANDLE; | |
stdcall; external winevt; | |
function EvtOpenEventMetadataEnum(PublisherMetadata: EVT_HANDLE; | |
Flags: dword): EVT_HANDLE; stdcall; external winevt; | |
function EvtOpenLog(Session: EVT_HANDLE; Path: PwideChar; | |
Flags: EVT_OPEN_LOG_FLAGS): EVT_HANDLE; stdcall; external winevt; | |
function EvtOpenPublisherEnum(Session: EVT_HANDLE; Flags: dword): EVT_HANDLE; | |
stdcall; external winevt; | |
function EvtOpenPublisherMetadata(Session: EVT_HANDLE; | |
PublisherIdentity: PWideChar; LogFilePath: PwideChar; Locale: LCID; | |
Flags: dword): EVT_HANDLE; | |
stdcall; external winevt; | |
function EvtOpenSession(LoginClass: EVT_LOGIN_CLASS; Login: Pointer; | |
Timeout, Flags: dword): EVT_HANDLE; stdcall; external winevt; | |
function EvtQuery(Session: EVT_HANDLE; Path, Query: PWideChar; Flags: EVT_QUERY_FLAGS): EVT_HANDLE; | |
stdcall; external winevt; | |
function EvtRender(Context, Fragment: EVT_HANDLE; Flags:EVT_RENDER_FLAGS; BufferSize: dword; | |
Buffer: pointer; BufferUsed, PropertyCount: PDword): boolean; stdcall; external winevt; | |
function EvtSaveChannelConfig(ChannelConfig: EVT_HANDLE; Flags: dword): boolean; | |
stdcall; external winevt; | |
function EvtSeek(ResultSet: EVT_HANDLE; Position: LONGLONG; | |
Bookmark: EVT_HANDLE; Timeout, Flags: dword): boolean; stdcall; external winevt; | |
function EvtSetChannelConfigProperty(ChannelConfig: EVT_HANDLE; | |
PropertyID: EVT_CHANNEL_CONFIG_PROPERTY_ID; Flags: dword; | |
PropertyValue: PEVT_VARIANT): boolean; stdcall; external winevt; | |
function EvtSubscribe(Session: EVT_HANDLE; SignalEvent: EVT_HANDLE; | |
ChannelPath, Query: PWideChar; Bookmark: EVT_HANDLE; Context: pointer; | |
Callback: EVT_SUBSCRIBE_CALLBACK; Flags: dword): EVT_HANDLE; stdcall; external winevt; | |
function EvtUpdateBookmark(Bookmark, Event: EVT_HANDLE): boolean; | |
stdcall; external winevt; | |
implementation | |
end. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment