2 * PROJECT: ReactOS kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: base/services/eventlog/eventlog.h
5 * PURPOSE: Event logging service
6 * COPYRIGHT: Copyright 2005 Saveliy Tretiakov
10 #define __EVENTLOG_H__
14 #define WIN32_NO_STATUS
18 #include <ndk/rtlfuncs.h>
19 #include <ndk/obfuncs.h>
20 #include <eventlogrpc_s.h>
23 typedef struct _IO_ERROR_LPC
26 IO_ERROR_LOG_MESSAGE Message
;
27 } IO_ERROR_LPC
, *PIO_ERROR_LPC
;
33 * Our file format will be compatible with NT's
35 #define LOGFILE_SIGNATURE 0x654c664c
38 * Flags used in logfile header
40 #define ELF_LOGFILE_HEADER_DIRTY 1
41 #define ELF_LOGFILE_HEADER_WRAP 2
42 #define ELF_LOGFILE_LOGFULL_WRITTEN 4
43 #define ELF_LOGFILE_ARCHIVE_SET 8
45 /* FIXME: MSDN reads that the following two structs are in winnt.h. Are they? */
46 typedef struct _EVENTLOGHEADER
54 ULONG CurrentRecordNumber
;
55 ULONG OldestRecordNumber
;
60 } EVENTLOGHEADER
, *PEVENTLOGHEADER
;
62 typedef struct _EVENTLOGEOF
64 ULONG RecordSizeBeginning
;
71 ULONG CurrentRecordNumber
;
72 ULONG OldestRecordNumber
;
74 } EVENTLOGEOF
, *PEVENTLOGEOF
;
76 typedef struct _EVENT_OFFSET_INFO
80 } EVENT_OFFSET_INFO
, *PEVENT_OFFSET_INFO
;
82 typedef struct _LOGFILE
85 EVENTLOGHEADER Header
;
89 PEVENT_OFFSET_INFO OffsetInfo
;
96 typedef struct _EVENTSOURCE
98 LIST_ENTRY EventSourceListEntry
;
101 } EVENTSOURCE
, *PEVENTSOURCE
;
104 /* Log Handle Flags */
105 #define LOG_HANDLE_BACKUP_FILE 1
107 typedef struct _LOGHANDLE
109 LIST_ENTRY LogHandleListEntry
;
110 PEVENTSOURCE EventSource
;
115 } LOGHANDLE
, *PLOGHANDLE
;
118 VOID
LogfListInitialize(VOID
);
120 PLOGFILE
LogfListHead(VOID
);
122 INT
LogfListItemCount(VOID
);
124 PLOGFILE
LogfListItemByIndex(INT Index
);
126 PLOGFILE
LogfListItemByName(WCHAR
* Name
);
128 INT
LogfListItemIndexByName(WCHAR
* Name
);
130 VOID
LogfListAddItem(PLOGFILE Item
);
132 VOID
LogfListRemoveItem(PLOGFILE Item
);
134 DWORD
LogfReadEvent(PLOGFILE LogFile
,
136 DWORD
* RecordNumber
,
143 BOOL
LogfWriteData(PLOGFILE LogFile
,
148 LogfClearFile(PLOGFILE LogFile
,
149 PUNICODE_STRING BackupFileName
);
152 LogfBackupFile(PLOGFILE LogFile
,
153 PUNICODE_STRING BackupFileName
);
156 LogfCreate(PLOGFILE
*Logfile
,
158 PUNICODE_STRING FileName
,
165 LogfClose(PLOGFILE LogFile
,
168 VOID
LogfCloseAll(VOID
);
170 DWORD
LogfGetOldestRecord(PLOGFILE LogFile
);
172 DWORD
LogfGetCurrentRecord(PLOGFILE LogFile
);
174 ULONG
LogfOffsetByNumber(PLOGFILE LogFile
,
177 BOOL
LogfAddOffsetInformation(PLOGFILE LogFile
,
181 BOOL
LogfDeleteOffsetInformation(PLOGFILE LogFile
,
184 PBYTE
LogfAllocAndBuildNewRecord(LPDWORD lpRecSize
,
185 DWORD dwRecordNumber
,
190 LPCWSTR ComputerName
,
199 LogfReportEvent(WORD wType
,
208 extern HANDLE MyHeap
;
210 VOID
PRINT_HEADER(PEVENTLOGHEADER header
);
212 VOID
PRINT_RECORD(PEVENTLOGRECORD pRec
);
214 VOID
EventTimeToSystemTime(DWORD EventTime
,
215 SYSTEMTIME
* SystemTime
);
217 VOID
SystemTimeToEventTime(SYSTEMTIME
* pSystemTime
,
221 VOID
InitEventSourceList(VOID
);
224 LoadEventSources(HKEY hKey
,
228 GetEventSourceByName(LPCWSTR Name
);
232 NTSTATUS WINAPI
PortThreadRoutine(PVOID Param
);
234 NTSTATUS
InitLogPort(VOID
);
236 NTSTATUS
ProcessPortMessage(VOID
);
239 DWORD WINAPI
RpcThreadRoutine(LPVOID lpParameter
);
241 static __inline
void LogfFreeRecord(LPVOID Rec
)
243 HeapFree(MyHeap
, 0, Rec
);
246 #endif /* __EVENTLOG_H__ */