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 "eventlogrpc_s.h"
24 typedef struct _IO_ERROR_LPC
27 IO_ERROR_LOG_MESSAGE Message
;
28 } IO_ERROR_LPC
, *PIO_ERROR_LPC
;
34 * Our file format will be compatible with NT's
36 #define LOGFILE_SIGNATURE 0x654c664c
39 * Flags used in logfile header
41 #define ELF_LOGFILE_HEADER_DIRTY 1
42 #define ELF_LOGFILE_HEADER_WRAP 2
43 #define ELF_LOGGFILE_LOGFULL_WRITTEN 4
44 #define ELF_LOGFILE_ARCHIVE_SET 8
46 /* FIXME: MSDN reads that the following two structs are in winnt.h. Are they? */
47 typedef struct _EVENTLOGHEADER
55 ULONG CurrentRecordNumber
;
56 ULONG OldestRecordNumber
;
61 } EVENTLOGHEADER
, *PEVENTLOGHEADER
;
63 typedef struct _EVENTLOGEOF
65 ULONG RecordSizeBeginning
;
72 ULONG CurrentRecordNumber
;
73 ULONG OldestRecordNumber
;
75 } EVENTLOGEOF
, *PEVENTLOGEOF
;
77 typedef struct _EVENT_OFFSET_INFO
81 } EVENT_OFFSET_INFO
, *PEVENT_OFFSET_INFO
;
83 typedef struct _LOGFILE
86 EVENTLOGHEADER Header
;
90 PEVENT_OFFSET_INFO OffsetInfo
;
96 typedef struct _EVENTSOURCE
98 LIST_ENTRY EventSourceListEntry
;
102 } EVENTSOURCE
, *PEVENTSOURCE
;
105 VOID
LogfListInitialize(VOID
);
107 PLOGFILE
LogfListHead(VOID
);
109 INT
LogfListItemCount(VOID
);
111 PLOGFILE
LogfListItemByIndex(INT Index
);
113 PLOGFILE
LogfListItemByName(WCHAR
* Name
);
115 INT
LogfListItemIndexByName(WCHAR
* Name
);
117 VOID
LogfListAddItem(PLOGFILE Item
);
119 VOID
LogfListRemoveItem(PLOGFILE Item
);
121 DWORD
LogfReadEvent(PLOGFILE LogFile
,
123 DWORD
* RecordNumber
,
127 DWORD
* BytesNeeded
);
129 BOOL
LogfWriteData(PLOGFILE LogFile
,
133 PLOGFILE
LogfCreate(WCHAR
* LogName
,
136 VOID
LogfClose(PLOGFILE LogFile
);
138 VOID
LogfCloseAll(VOID
);
140 BOOL
LogfInitializeNew(PLOGFILE LogFile
);
142 BOOL
LogfInitializeExisting(PLOGFILE LogFile
);
144 DWORD
LogfGetOldestRecord(PLOGFILE LogFile
);
146 DWORD
LogfGetCurrentRecord(PLOGFILE LogFile
);
148 ULONG
LogfOffsetByNumber(PLOGFILE LogFile
,
151 BOOL
LogfAddOffsetInformation(PLOGFILE LogFile
,
155 BOOL
LogfDeleteOffsetInformation(PLOGFILE LogFile
,
158 PBYTE
LogfAllocAndBuildNewRecord(LPDWORD lpRecSize
,
159 DWORD dwRecordNumber
,
164 LPCWSTR ComputerName
,
173 extern HANDLE MyHeap
;
175 VOID
PRINT_HEADER(PEVENTLOGHEADER header
);
177 VOID
PRINT_RECORD(PEVENTLOGRECORD pRec
);
179 VOID
EventTimeToSystemTime(DWORD EventTime
,
180 SYSTEMTIME
* SystemTime
);
182 VOID
SystemTimeToEventTime(SYSTEMTIME
* pSystemTime
,
186 NTSTATUS WINAPI
PortThreadRoutine(PVOID Param
);
188 NTSTATUS
InitLogPort(VOID
);
190 NTSTATUS
ProcessPortMessage(VOID
);
193 DWORD WINAPI
RpcThreadRoutine(LPVOID lpParameter
);
195 static __inline
void LogfFreeRecord(LPVOID Rec
)
197 HeapFree(MyHeap
, 0, Rec
);
200 #endif /* __EVENTLOG_H__ */