/*
- * PROJECT: ReactOS kernel
- * LICENSE: GPL - See COPYING in the top level directory
- * FILE: services/eventlog/eventlog.h
- * PURPOSE: Event logging service
- * COPYRIGHT: Copyright 2005 Saveliy Tretiakov
+ * PROJECT: ReactOS EventLog Service
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: base/services/eventlog/eventlog.h
+ * PURPOSE: Precompiled Header for the Event logging service
+ * COPYRIGHT: Copyright 2005 Saveliy Tretiakov
*/
#ifndef __EVENTLOG_H__
#define __EVENTLOG_H__
-#define NDEBUG
-#define WIN32_NO_STATUS
-
-#include <stdio.h>
+#include <stdarg.h>
+/* PSDK/NDK Headers */
+#define WIN32_NO_STATUS
#include <windef.h>
#include <winbase.h>
-#include <netevent.h>
-#include <lpctypes.h>
-#include <lpcfuncs.h>
-#include <rtlfuncs.h>
-#include <obfuncs.h>
-#include <iofuncs.h>
-#include <debug.h>
-#include <eventlogrpc_s.h>
-typedef struct _IO_ERROR_LPC
-{
- PORT_MESSAGE Header;
- IO_ERROR_LOG_MESSAGE Message;
-} IO_ERROR_LPC, *PIO_ERROR_LPC;
+#define NTOS_MODE_USER
+#include <ndk/rtlfuncs.h>
+#include <ndk/obfuncs.h>
-#define MAJORVER 1
-#define MINORVER 1
+#define ROUND_DOWN(n, align) (((ULONG)n) & ~((align) - 1l))
+#define ROUND_UP(n, align) ROUND_DOWN(((ULONG)n) + (align) - 1, (align))
-/*
- * Our file format will be compatible with NT's
- */
-#define LOGFILE_SIGNATURE 0x654c664c
-
-/*
- * Flags used in logfile header
- */
-#define ELF_LOGFILE_HEADER_DIRTY 1
-#define ELF_LOGFILE_HEADER_WRAP 2
-#define ELF_LOGFILE_LOGFULL_WRITTEN 4
-#define ELF_LOGFILE_ARCHIVE_SET 8
+#include <evtlib.h>
-/* FIXME: MSDN reads that the following two structs are in winnt.h. Are they? */
-typedef struct _EVENTLOGHEADER
-{
- ULONG HeaderSize;
- ULONG Signature;
- ULONG MajorVersion;
- ULONG MinorVersion;
- ULONG StartOffset;
- ULONG EndOffset;
- ULONG CurrentRecordNumber;
- ULONG OldestRecordNumber;
- ULONG MaxSize;
- ULONG Flags;
- ULONG Retention;
- ULONG EndHeaderSize;
-} EVENTLOGHEADER, *PEVENTLOGHEADER;
+#include <eventlogrpc_s.h>
+#include <strsafe.h>
-typedef struct _EVENTLOGEOF
-{
- ULONG RecordSizeBeginning;
- ULONG Ones;
- ULONG Twos;
- ULONG Threes;
- ULONG Fours;
- ULONG BeginRecord;
- ULONG EndRecord;
- ULONG CurrentRecordNumber;
- ULONG OldestRecordNumber;
- ULONG RecordSizeEnd;
-} EVENTLOGEOF, *PEVENTLOGEOF;
-
-typedef struct _EVENT_OFFSET_INFO
-{
- ULONG EventNumber;
- ULONG EventOffset;
-} EVENT_OFFSET_INFO, *PEVENT_OFFSET_INFO;
+/* Defined in evtlib.h */
+// #define LOGFILE_SIGNATURE 0x654c664c // "LfLe"
typedef struct _LOGFILE
{
- HANDLE hFile;
- EVENTLOGHEADER Header;
+ EVTLOGFILE LogFile;
+ HANDLE FileHandle;
WCHAR *LogName;
- WCHAR *FileName;
RTL_RESOURCE Lock;
- PEVENT_OFFSET_INFO OffsetInfo;
- ULONG OffsetInfoSize;
- ULONG OffsetInfoNext;
BOOL Permanent;
LIST_ENTRY ListEntry;
} LOGFILE, *PLOGFILE;
WCHAR szName[1];
} LOGHANDLE, *PLOGHANDLE;
-/* file.c */
-VOID LogfListInitialize(VOID);
-
-PLOGFILE LogfListHead(VOID);
-INT LogfListItemCount(VOID);
-
-PLOGFILE LogfListItemByIndex(INT Index);
-
-PLOGFILE LogfListItemByName(WCHAR * Name);
+/* eventlog.c */
+extern PEVENTSOURCE EventLogSource;
-INT LogfListItemIndexByName(WCHAR * Name);
+VOID PRINT_RECORD(PEVENTLOGRECORD pRec);
-VOID LogfListAddItem(PLOGFILE Item);
-VOID LogfListRemoveItem(PLOGFILE Item);
+/* eventsource.c */
+VOID InitEventSourceList(VOID);
-DWORD LogfReadEvent(PLOGFILE LogFile,
- DWORD Flags,
- DWORD * RecordNumber,
- DWORD BufSize,
- PBYTE Buffer,
- DWORD * BytesRead,
- DWORD * BytesNeeded,
- BOOL Ansi);
+BOOL
+LoadEventSources(HKEY hKey,
+ PLOGFILE pLogFile);
-BOOL LogfWriteData(PLOGFILE LogFile,
- DWORD BufSize,
- PBYTE Buffer);
+PEVENTSOURCE
+GetEventSourceByName(LPCWSTR Name);
-NTSTATUS
-LogfClearFile(PLOGFILE LogFile,
- PUNICODE_STRING BackupFileName);
-NTSTATUS
-LogfBackupFile(PLOGFILE LogFile,
- PUNICODE_STRING BackupFileName);
+/* file.c */
+VOID LogfListInitialize(VOID);
+DWORD LogfListItemCount(VOID);
+PLOGFILE LogfListItemByIndex(DWORD Index);
+PLOGFILE LogfListItemByName(LPCWSTR Name);
+// DWORD LogfListItemIndexByName(WCHAR * Name);
NTSTATUS
-LogfCreate(PLOGFILE *Logfile,
- WCHAR * LogName,
+LogfCreate(PLOGFILE* LogFile,
+ PCWSTR LogName,
PUNICODE_STRING FileName,
- BOOL Permanent,
- BOOL Backup);
+ ULONG MaxSize,
+ ULONG Retention,
+ BOOLEAN Permanent,
+ BOOLEAN Backup);
VOID
LogfClose(PLOGFILE LogFile,
- BOOL ForceClose);
+ BOOLEAN ForceClose);
VOID LogfCloseAll(VOID);
-DWORD LogfGetOldestRecord(PLOGFILE LogFile);
-
-DWORD LogfGetCurrentRecord(PLOGFILE LogFile);
-
-ULONG LogfOffsetByNumber(PLOGFILE LogFile,
- DWORD RecordNumber);
+NTSTATUS
+LogfClearFile(PLOGFILE LogFile,
+ PUNICODE_STRING BackupFileName);
-BOOL LogfAddOffsetInformation(PLOGFILE LogFile,
- ULONG ulNumber,
- ULONG ulOffset);
+NTSTATUS
+LogfBackupFile(PLOGFILE LogFile,
+ PUNICODE_STRING BackupFileName);
-BOOL LogfDeleteOffsetInformation(PLOGFILE LogFile,
- ULONG ulNumber);
+NTSTATUS
+LogfReadEvents(PLOGFILE LogFile,
+ ULONG Flags,
+ PULONG RecordNumber,
+ ULONG BufSize,
+ PBYTE Buffer,
+ PULONG BytesRead,
+ PULONG BytesNeeded,
+ BOOLEAN Ansi);
-PBYTE LogfAllocAndBuildNewRecord(LPDWORD lpRecSize,
- DWORD dwRecordNumber,
- WORD wType,
- WORD wCategory,
- DWORD dwEventId,
- LPCWSTR SourceName,
- LPCWSTR ComputerName,
- DWORD dwSidLength,
- PSID lpUserSid,
- WORD wNumStrings,
- WCHAR * lpStrings,
- DWORD dwDataSize,
- LPVOID lpRawData);
+NTSTATUS
+LogfWriteRecord(PLOGFILE LogFile,
+ PEVENTLOGRECORD Record,
+ SIZE_T BufSize);
+
+PEVENTLOGRECORD
+LogfAllocAndBuildNewRecord(PSIZE_T pRecSize,
+ ULONG Time,
+ USHORT wType,
+ USHORT wCategory,
+ ULONG dwEventId,
+ PUNICODE_STRING SourceName,
+ PUNICODE_STRING ComputerName,
+ ULONG dwSidLength,
+ PSID pUserSid,
+ USHORT wNumStrings,
+ PWSTR pStrings,
+ ULONG dwDataSize,
+ PVOID pRawData);
+
+static __inline void LogfFreeRecord(PEVENTLOGRECORD Record)
+{
+ RtlFreeHeap(GetProcessHeap(), 0, Record);
+}
VOID
-LogfReportEvent(WORD wType,
- WORD wCategory,
- DWORD dwEventId,
- WORD wNumStrings,
- WCHAR *lpStrings,
- DWORD dwDataSize,
- LPVOID lpRawData);
-
-/* eventlog.c */
-extern HANDLE MyHeap;
-
-VOID PRINT_HEADER(PEVENTLOGHEADER header);
-
-VOID PRINT_RECORD(PEVENTLOGRECORD pRec);
-
-VOID EventTimeToSystemTime(DWORD EventTime,
- SYSTEMTIME * SystemTime);
-
-VOID SystemTimeToEventTime(SYSTEMTIME * pSystemTime,
- DWORD * pEventTime);
-
-/* eventsource.c */
-VOID InitEventSourceList(VOID);
-
-BOOL
-LoadEventSources(HKEY hKey,
- PLOGFILE pLogFile);
-
-PEVENTSOURCE
-GetEventSourceByName(LPCWSTR Name);
+LogfReportEvent(USHORT wType,
+ USHORT wCategory,
+ ULONG dwEventId,
+ USHORT wNumStrings,
+ PWSTR pStrings,
+ ULONG dwDataSize,
+ PVOID pRawData);
/* logport.c */
/* rpc.c */
DWORD WINAPI RpcThreadRoutine(LPVOID lpParameter);
-static __inline void LogfFreeRecord(LPVOID Rec)
-{
- HeapFree(MyHeap, 0, Rec);
-}
-
#endif /* __EVENTLOG_H__ */