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
22 #include <pseh/pseh.h>
23 #include "eventlogrpc_s.h"
25 typedef struct _IO_ERROR_LPC
28 IO_ERROR_LOG_MESSAGE Message
;
29 } IO_ERROR_LPC
, *PIO_ERROR_LPC
;
35 * Our file format will be compatible with NT's
37 #define LOGFILE_SIGNATURE 0x654c664c
41 * Flags used in logfile header
43 #define LOGFILE_FLAG1 1
44 #define LOGFILE_FLAG2 2
45 #define LOGFILE_FLAG3 4
46 #define LOGFILE_FLAG4 8
54 DWORD FirstRecordOffset
;
62 } FILE_HEADER
, *PFILE_HEADER
;
67 DWORD Ones
; // Must be 0x11111111
68 DWORD Twos
; // Must be 0x22222222
69 DWORD Threes
; // Must be 0x33333333
70 DWORD Fours
; // Must be 0x44444444
73 DWORD NextRecordNumber
;
74 DWORD OldestRecordNumber
;
76 } EOF_RECORD
, *PEOF_RECORD
;
82 } EVENT_OFFSET_INFO
, *PEVENT_OFFSET_INFO
;
91 PEVENT_OFFSET_INFO OffsetInfo
;
99 VOID
LogfListInitialize(VOID
);
101 PLOGFILE
LogfListHead(VOID
);
103 INT
LogfListItemCount(VOID
);
105 PLOGFILE
LogfListItemByIndex(INT Index
);
107 PLOGFILE
LogfListItemByName(WCHAR
* Name
);
109 INT
LogfListItemIndexByName(WCHAR
* Name
);
111 VOID
LogfListAddItem(PLOGFILE Item
);
113 VOID
LogfListRemoveItem(PLOGFILE Item
);
115 BOOL
LogfReadEvent(PLOGFILE LogFile
,
121 DWORD
* BytesNeeded
);
123 BOOL
LogfWriteData(PLOGFILE LogFile
,
127 PLOGFILE
LogfCreate(WCHAR
* LogName
,
130 VOID
LogfClose(PLOGFILE LogFile
);
132 VOID
LogfCloseAll(VOID
);
134 BOOL
LogfInitializeNew(PLOGFILE LogFile
);
136 BOOL
LogfInitializeExisting(PLOGFILE LogFile
);
138 DWORD
LogfGetOldestRecord(PLOGFILE LogFile
);
140 ULONG
LogfOffsetByNumber(PLOGFILE LogFile
,
143 BOOL
LogfAddOffsetInformation(PLOGFILE LogFile
,
147 PBYTE
LogfAllocAndBuildNewRecord(LPDWORD lpRecSize
,
148 DWORD dwRecordNumber
,
153 LPCWSTR ComputerName
,
161 void __inline
LogfFreeRecord(LPVOID Rec
);
164 VOID
PRINT_HEADER(PFILE_HEADER header
);
166 VOID
PRINT_RECORD(PEVENTLOGRECORD pRec
);
168 VOID
EventTimeToSystemTime(DWORD EventTime
,
169 SYSTEMTIME
* SystemTime
);
171 VOID
SystemTimeToEventTime(SYSTEMTIME
* pSystemTime
,
175 NTSTATUS STDCALL
PortThreadRoutine(PVOID Param
);
177 NTSTATUS
InitLogPort(VOID
);
179 NTSTATUS
ProcessPortMessage(VOID
);
182 DWORD STDCALL
RpcThreadRoutine(LPVOID lpParameter
);
184 #endif /* __EVENTLOG_H__ */