[EVENTLOG]
[reactos.git] / reactos / base / services / eventlog / eventlog.h
index 4b9c6a8..c1bc997 100644 (file)
 #define NDEBUG
 #define WIN32_NO_STATUS
 
+#include <stdio.h>
 #include <windows.h>
+#include <netevent.h>
 #include <lpctypes.h>
 #include <lpcfuncs.h>
 #include <rtlfuncs.h>
 #include <obfuncs.h>
-#include <iotypes.h>
+#include <iofuncs.h>
 #include <debug.h>
 #include "eventlogrpc_s.h"
 
@@ -40,11 +42,12 @@ typedef struct _IO_ERROR_LPC
  */
 #define ELF_LOGFILE_HEADER_DIRTY 1
 #define ELF_LOGFILE_HEADER_WRAP 2
-#define ELF_LOGGFILE_LOGFULL_WRITTEN 4
+#define ELF_LOGFILE_LOGFULL_WRITTEN 4
 #define ELF_LOGFILE_ARCHIVE_SET 8
 
 /* FIXME: MSDN reads that the following two structs are in winnt.h. Are they? */
-typedef struct _EVENTLOGHEADER {
+typedef struct _EVENTLOGHEADER
+{
     ULONG HeaderSize;
     ULONG Signature;
     ULONG MajorVersion;
@@ -59,7 +62,8 @@ typedef struct _EVENTLOGHEADER {
     ULONG EndHeaderSize;
 } EVENTLOGHEADER, *PEVENTLOGHEADER;
 
-typedef struct _EVENTLOGEOF {
+typedef struct _EVENTLOGEOF
+{
     ULONG RecordSizeBeginning;
     ULONG Ones;
     ULONG Twos;
@@ -72,19 +76,19 @@ typedef struct _EVENTLOGEOF {
     ULONG RecordSizeEnd;
 } EVENTLOGEOF, *PEVENTLOGEOF;
 
-typedef struct
+typedef struct _EVENT_OFFSET_INFO
 {
     ULONG EventNumber;
     ULONG EventOffset;
 } EVENT_OFFSET_INFO, *PEVENT_OFFSET_INFO;
 
-typedef struct
+typedef struct _LOGFILE
 {
     HANDLE hFile;
     EVENTLOGHEADER Header;
     WCHAR *LogName;
     WCHAR *FileName;
-    CRITICAL_SECTION cs;
+    RTL_RESOURCE Lock;
     PEVENT_OFFSET_INFO OffsetInfo;
     ULONG OffsetInfoSize;
     ULONG OffsetInfoNext;
@@ -95,10 +99,18 @@ typedef struct _EVENTSOURCE
 {
     LIST_ENTRY EventSourceListEntry;
     PLOGFILE LogFile;
-    ULONG CurrentRecord;
     WCHAR szName[1];
 } EVENTSOURCE, *PEVENTSOURCE;
 
+typedef struct _LOGHANDLE
+{
+    LIST_ENTRY LogHandleListEntry;
+    PEVENTSOURCE EventSource;
+    PLOGFILE LogFile;
+    ULONG CurrentRecord;
+    WCHAR szName[1];
+} LOGHANDLE, *PLOGHANDLE;
+
 /* file.c */
 VOID LogfListInitialize(VOID);
 
@@ -122,12 +134,21 @@ DWORD LogfReadEvent(PLOGFILE LogFile,
                    DWORD BufSize,
                    PBYTE Buffer,
                    DWORD * BytesRead,
-                   DWORD * BytesNeeded);
+                   DWORD * BytesNeeded,
+                   BOOL Ansi);
 
 BOOL LogfWriteData(PLOGFILE LogFile,
                    DWORD BufSize,
                    PBYTE Buffer);
 
+NTSTATUS
+LogfClearFile(PLOGFILE LogFile,
+              PUNICODE_STRING BackupFileName);
+
+NTSTATUS
+LogfBackupFile(PLOGFILE LogFile,
+               PUNICODE_STRING BackupFileName);
+
 PLOGFILE LogfCreate(WCHAR * LogName,
                     WCHAR * FileName);
 
@@ -167,6 +188,15 @@ PBYTE LogfAllocAndBuildNewRecord(LPDWORD lpRecSize,
                                  DWORD dwDataSize,
                                  LPVOID lpRawData);
 
+VOID
+LogfReportEvent(WORD wType,
+                WORD wCategory,
+                DWORD dwEventId,
+                WORD wNumStrings,
+                WCHAR *lpStrings,
+                DWORD dwDataSize,
+                LPVOID lpRawData);
+
 /* eventlog.c */
 extern HANDLE MyHeap;
 
@@ -180,6 +210,17 @@ VOID EventTimeToSystemTime(DWORD EventTime,
 VOID SystemTimeToEventTime(SYSTEMTIME * pSystemTime,
                            DWORD * pEventTime);
 
+/* eventsource.c */
+VOID InitEventSourceList(VOID);
+
+BOOL
+LoadEventSources(HKEY hKey,
+                 PLOGFILE pLogFile);
+
+PEVENTSOURCE
+GetEventSourceByName(LPCWSTR Name);
+
+
 /* logport.c */
 NTSTATUS WINAPI PortThreadRoutine(PVOID Param);