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
26 #include <eventlogrpc_s.h>
28 typedef struct _IO_ERROR_LPC
31 IO_ERROR_LOG_MESSAGE Message
;
32 } IO_ERROR_LPC
, *PIO_ERROR_LPC
;
38 * Our file format will be compatible with NT's
40 #define LOGFILE_SIGNATURE 0x654c664c
43 * Flags used in logfile header
45 #define ELF_LOGFILE_HEADER_DIRTY 1
46 #define ELF_LOGFILE_HEADER_WRAP 2
47 #define ELF_LOGFILE_LOGFULL_WRITTEN 4
48 #define ELF_LOGFILE_ARCHIVE_SET 8
50 /* FIXME: MSDN reads that the following two structs are in winnt.h. Are they? */
51 typedef struct _EVENTLOGHEADER
59 ULONG CurrentRecordNumber
;
60 ULONG OldestRecordNumber
;
65 } EVENTLOGHEADER
, *PEVENTLOGHEADER
;
67 typedef struct _EVENTLOGEOF
69 ULONG RecordSizeBeginning
;
76 ULONG CurrentRecordNumber
;
77 ULONG OldestRecordNumber
;
79 } EVENTLOGEOF
, *PEVENTLOGEOF
;
81 typedef struct _EVENT_OFFSET_INFO
85 } EVENT_OFFSET_INFO
, *PEVENT_OFFSET_INFO
;
87 typedef struct _LOGFILE
90 EVENTLOGHEADER Header
;
94 PEVENT_OFFSET_INFO OffsetInfo
;
101 typedef struct _EVENTSOURCE
103 LIST_ENTRY EventSourceListEntry
;
106 } EVENTSOURCE
, *PEVENTSOURCE
;
109 /* Log Handle Flags */
110 #define LOG_HANDLE_BACKUP_FILE 1
112 typedef struct _LOGHANDLE
114 LIST_ENTRY LogHandleListEntry
;
115 PEVENTSOURCE EventSource
;
120 } LOGHANDLE
, *PLOGHANDLE
;
123 VOID
LogfListInitialize(VOID
);
125 PLOGFILE
LogfListHead(VOID
);
127 INT
LogfListItemCount(VOID
);
129 PLOGFILE
LogfListItemByIndex(INT Index
);
131 PLOGFILE
LogfListItemByName(WCHAR
* Name
);
133 INT
LogfListItemIndexByName(WCHAR
* Name
);
135 VOID
LogfListAddItem(PLOGFILE Item
);
137 VOID
LogfListRemoveItem(PLOGFILE Item
);
139 DWORD
LogfReadEvent(PLOGFILE LogFile
,
141 DWORD
* RecordNumber
,
148 BOOL
LogfWriteData(PLOGFILE LogFile
,
153 LogfClearFile(PLOGFILE LogFile
,
154 PUNICODE_STRING BackupFileName
);
157 LogfBackupFile(PLOGFILE LogFile
,
158 PUNICODE_STRING BackupFileName
);
161 LogfCreate(PLOGFILE
*Logfile
,
163 PUNICODE_STRING FileName
,
168 LogfClose(PLOGFILE LogFile
,
171 VOID
LogfCloseAll(VOID
);
173 DWORD
LogfGetOldestRecord(PLOGFILE LogFile
);
175 DWORD
LogfGetCurrentRecord(PLOGFILE LogFile
);
177 ULONG
LogfOffsetByNumber(PLOGFILE LogFile
,
180 BOOL
LogfAddOffsetInformation(PLOGFILE LogFile
,
184 BOOL
LogfDeleteOffsetInformation(PLOGFILE LogFile
,
187 PBYTE
LogfAllocAndBuildNewRecord(LPDWORD lpRecSize
,
188 DWORD dwRecordNumber
,
193 LPCWSTR ComputerName
,
202 LogfReportEvent(WORD wType
,
211 extern HANDLE MyHeap
;
213 VOID
PRINT_HEADER(PEVENTLOGHEADER header
);
215 VOID
PRINT_RECORD(PEVENTLOGRECORD pRec
);
217 VOID
EventTimeToSystemTime(DWORD EventTime
,
218 SYSTEMTIME
* SystemTime
);
220 VOID
SystemTimeToEventTime(SYSTEMTIME
* pSystemTime
,
224 VOID
InitEventSourceList(VOID
);
227 LoadEventSources(HKEY hKey
,
231 GetEventSourceByName(LPCWSTR Name
);
235 NTSTATUS WINAPI
PortThreadRoutine(PVOID Param
);
237 NTSTATUS
InitLogPort(VOID
);
239 NTSTATUS
ProcessPortMessage(VOID
);
242 DWORD WINAPI
RpcThreadRoutine(LPVOID lpParameter
);
244 static __inline
void LogfFreeRecord(LPVOID Rec
)
246 HeapFree(MyHeap
, 0, Rec
);
249 #endif /* __EVENTLOG_H__ */