[EVTLIB]: Allow specifying a memory allocation tag when freeing the allocated buffers...
[reactos.git] / reactos / base / services / eventlog / eventlog.h
index 6bf4e71..b57f675 100644 (file)
@@ -1,99 +1,42 @@
 /*
- * 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;
@@ -119,116 +62,97 @@ typedef struct _LOGHANDLE
     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 */
@@ -241,9 +165,4 @@ NTSTATUS ProcessPortMessage(VOID);
 /* rpc.c */
 DWORD WINAPI RpcThreadRoutine(LPVOID lpParameter);
 
-static __inline void LogfFreeRecord(LPVOID Rec)
-{
-    HeapFree(MyHeap, 0, Rec);
-}
-
 #endif  /* __EVENTLOG_H__ */