2 * PROJECT: ReactOS kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: services/eventlog/eventlog.h
5 * PURPOSE: Event logging service
6 * COPYRIGHT: Copyright 2005 Saveliy Tretiakov
10 #define __EVENTLOG_H__
13 #define WIN32_NO_STATUS
24 #include "eventlogrpc_s.h"
26 typedef struct _IO_ERROR_LPC
29 IO_ERROR_LOG_MESSAGE Message
;
30 } IO_ERROR_LPC
, *PIO_ERROR_LPC
;
36 * Our file format will be compatible with NT's
38 #define LOGFILE_SIGNATURE 0x654c664c
41 * Flags used in logfile header
43 #define ELF_LOGFILE_HEADER_DIRTY 1
44 #define ELF_LOGFILE_HEADER_WRAP 2
45 #define ELF_LOGFILE_LOGFULL_WRITTEN 4
46 #define ELF_LOGFILE_ARCHIVE_SET 8
48 /* FIXME: MSDN reads that the following two structs are in winnt.h. Are they? */
49 typedef struct _EVENTLOGHEADER
57 ULONG CurrentRecordNumber
;
58 ULONG OldestRecordNumber
;
63 } EVENTLOGHEADER
, *PEVENTLOGHEADER
;
65 typedef struct _EVENTLOGEOF
67 ULONG RecordSizeBeginning
;
74 ULONG CurrentRecordNumber
;
75 ULONG OldestRecordNumber
;
77 } EVENTLOGEOF
, *PEVENTLOGEOF
;
79 typedef struct _EVENT_OFFSET_INFO
83 } EVENT_OFFSET_INFO
, *PEVENT_OFFSET_INFO
;
85 typedef struct _LOGFILE
88 EVENTLOGHEADER Header
;
92 PEVENT_OFFSET_INFO OffsetInfo
;
99 typedef struct _EVENTSOURCE
101 LIST_ENTRY EventSourceListEntry
;
104 } EVENTSOURCE
, *PEVENTSOURCE
;
107 /* Log Handle Flags */
108 #define LOG_HANDLE_BACKUP_FILE 1
110 typedef struct _LOGHANDLE
112 LIST_ENTRY LogHandleListEntry
;
113 PEVENTSOURCE EventSource
;
118 } LOGHANDLE
, *PLOGHANDLE
;
121 VOID
LogfListInitialize(VOID
);
123 PLOGFILE
LogfListHead(VOID
);
125 INT
LogfListItemCount(VOID
);
127 PLOGFILE
LogfListItemByIndex(INT Index
);
129 PLOGFILE
LogfListItemByName(WCHAR
* Name
);
131 INT
LogfListItemIndexByName(WCHAR
* Name
);
133 VOID
LogfListAddItem(PLOGFILE Item
);
135 VOID
LogfListRemoveItem(PLOGFILE Item
);
137 DWORD
LogfReadEvent(PLOGFILE LogFile
,
139 DWORD
* RecordNumber
,
146 BOOL
LogfWriteData(PLOGFILE LogFile
,
151 LogfClearFile(PLOGFILE LogFile
,
152 PUNICODE_STRING BackupFileName
);
155 LogfBackupFile(PLOGFILE LogFile
,
156 PUNICODE_STRING BackupFileName
);
159 LogfCreate(PLOGFILE
*Logfile
,
161 PUNICODE_STRING FileName
,
166 LogfClose(PLOGFILE LogFile
,
169 VOID
LogfCloseAll(VOID
);
171 BOOL
LogfInitializeNew(PLOGFILE LogFile
);
173 BOOL
LogfInitializeExisting(PLOGFILE LogFile
);
175 DWORD
LogfGetOldestRecord(PLOGFILE LogFile
);
177 DWORD
LogfGetCurrentRecord(PLOGFILE LogFile
);
179 ULONG
LogfOffsetByNumber(PLOGFILE LogFile
,
182 BOOL
LogfAddOffsetInformation(PLOGFILE LogFile
,
186 BOOL
LogfDeleteOffsetInformation(PLOGFILE LogFile
,
189 PBYTE
LogfAllocAndBuildNewRecord(LPDWORD lpRecSize
,
190 DWORD dwRecordNumber
,
195 LPCWSTR ComputerName
,
204 LogfReportEvent(WORD wType
,
213 extern HANDLE MyHeap
;
215 VOID
PRINT_HEADER(PEVENTLOGHEADER header
);
217 VOID
PRINT_RECORD(PEVENTLOGRECORD pRec
);
219 VOID
EventTimeToSystemTime(DWORD EventTime
,
220 SYSTEMTIME
* SystemTime
);
222 VOID
SystemTimeToEventTime(SYSTEMTIME
* pSystemTime
,
226 VOID
InitEventSourceList(VOID
);
229 LoadEventSources(HKEY hKey
,
233 GetEventSourceByName(LPCWSTR Name
);
237 NTSTATUS WINAPI
PortThreadRoutine(PVOID Param
);
239 NTSTATUS
InitLogPort(VOID
);
241 NTSTATUS
ProcessPortMessage(VOID
);
244 DWORD WINAPI
RpcThreadRoutine(LPVOID lpParameter
);
246 static __inline
void LogfFreeRecord(LPVOID Rec
)
248 HeapFree(MyHeap
, 0, Rec
);
251 #endif /* __EVENTLOG_H__ */