ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

eventlog.h
Go to the documentation of this file.
00001 /*
00002  * PROJECT:          ReactOS kernel
00003  * LICENSE:          GPL - See COPYING in the top level directory
00004  * FILE:             services/eventlog/eventlog.h
00005  * PURPOSE:          Event logging service
00006  * COPYRIGHT:        Copyright 2005 Saveliy Tretiakov
00007  */
00008 
00009 #ifndef __EVENTLOG_H__
00010 #define __EVENTLOG_H__
00011 
00012 #define NDEBUG
00013 #define WIN32_NO_STATUS
00014 
00015 #include <stdio.h>
00016 #include <windows.h>
00017 #include <netevent.h>
00018 #include <lpctypes.h>
00019 #include <lpcfuncs.h>
00020 #include <rtlfuncs.h>
00021 #include <obfuncs.h>
00022 #include <iofuncs.h>
00023 #include <debug.h>
00024 #include "eventlogrpc_s.h"
00025 
00026 typedef struct _IO_ERROR_LPC
00027 {
00028     PORT_MESSAGE Header;
00029     IO_ERROR_LOG_MESSAGE Message;
00030 } IO_ERROR_LPC, *PIO_ERROR_LPC;
00031 
00032 #define MAJORVER 1
00033 #define MINORVER 1
00034 
00035 /*
00036  *  Our file format will be compatible with NT's
00037  */
00038 #define LOGFILE_SIGNATURE 0x654c664c
00039 
00040 /*
00041  *  Flags used in logfile header
00042  */
00043 #define ELF_LOGFILE_HEADER_DIRTY 1
00044 #define ELF_LOGFILE_HEADER_WRAP 2
00045 #define ELF_LOGFILE_LOGFULL_WRITTEN 4
00046 #define ELF_LOGFILE_ARCHIVE_SET 8
00047 
00048 /* FIXME: MSDN reads that the following two structs are in winnt.h. Are they? */
00049 typedef struct _EVENTLOGHEADER
00050 {
00051     ULONG HeaderSize;
00052     ULONG Signature;
00053     ULONG MajorVersion;
00054     ULONG MinorVersion;
00055     ULONG StartOffset;
00056     ULONG EndOffset;
00057     ULONG CurrentRecordNumber;
00058     ULONG OldestRecordNumber;
00059     ULONG MaxSize;
00060     ULONG Flags;
00061     ULONG Retention;
00062     ULONG EndHeaderSize;
00063 } EVENTLOGHEADER, *PEVENTLOGHEADER;
00064 
00065 typedef struct _EVENTLOGEOF
00066 {
00067     ULONG RecordSizeBeginning;
00068     ULONG Ones;
00069     ULONG Twos;
00070     ULONG Threes;
00071     ULONG Fours;
00072     ULONG BeginRecord;
00073     ULONG EndRecord;
00074     ULONG CurrentRecordNumber;
00075     ULONG OldestRecordNumber;
00076     ULONG RecordSizeEnd;
00077 } EVENTLOGEOF, *PEVENTLOGEOF;
00078 
00079 typedef struct _EVENT_OFFSET_INFO
00080 {
00081     ULONG EventNumber;
00082     ULONG EventOffset;
00083 } EVENT_OFFSET_INFO, *PEVENT_OFFSET_INFO;
00084 
00085 typedef struct _LOGFILE
00086 {
00087     HANDLE hFile;
00088     EVENTLOGHEADER Header;
00089     WCHAR *LogName;
00090     WCHAR *FileName;
00091     RTL_RESOURCE Lock;
00092     PEVENT_OFFSET_INFO OffsetInfo;
00093     ULONG OffsetInfoSize;
00094     ULONG OffsetInfoNext;
00095     BOOL Permanent;
00096     LIST_ENTRY ListEntry;
00097 } LOGFILE, *PLOGFILE;
00098 
00099 typedef struct _EVENTSOURCE
00100 {
00101     LIST_ENTRY EventSourceListEntry;
00102     PLOGFILE LogFile;
00103     WCHAR szName[1];
00104 } EVENTSOURCE, *PEVENTSOURCE;
00105 
00106 
00107 /* Log Handle Flags */
00108 #define LOG_HANDLE_BACKUP_FILE 1
00109 
00110 typedef struct _LOGHANDLE
00111 {
00112     LIST_ENTRY LogHandleListEntry;
00113     PEVENTSOURCE EventSource;
00114     PLOGFILE LogFile;
00115     ULONG CurrentRecord;
00116     ULONG Flags;
00117     WCHAR szName[1];
00118 } LOGHANDLE, *PLOGHANDLE;
00119 
00120 /* file.c */
00121 VOID LogfListInitialize(VOID);
00122 
00123 PLOGFILE LogfListHead(VOID);
00124 
00125 INT LogfListItemCount(VOID);
00126 
00127 PLOGFILE LogfListItemByIndex(INT Index);
00128 
00129 PLOGFILE LogfListItemByName(WCHAR * Name);
00130 
00131 INT LogfListItemIndexByName(WCHAR * Name);
00132 
00133 VOID LogfListAddItem(PLOGFILE Item);
00134 
00135 VOID LogfListRemoveItem(PLOGFILE Item);
00136 
00137 DWORD LogfReadEvent(PLOGFILE LogFile,
00138                    DWORD Flags,
00139                    DWORD * RecordNumber,
00140                    DWORD BufSize,
00141                    PBYTE Buffer,
00142                    DWORD * BytesRead,
00143                    DWORD * BytesNeeded,
00144                    BOOL Ansi);
00145 
00146 BOOL LogfWriteData(PLOGFILE LogFile,
00147                    DWORD BufSize,
00148                    PBYTE Buffer);
00149 
00150 NTSTATUS
00151 LogfClearFile(PLOGFILE LogFile,
00152               PUNICODE_STRING BackupFileName);
00153 
00154 NTSTATUS
00155 LogfBackupFile(PLOGFILE LogFile,
00156                PUNICODE_STRING BackupFileName);
00157 
00158 NTSTATUS
00159 LogfCreate(PLOGFILE *Logfile,
00160            WCHAR * LogName,
00161            PUNICODE_STRING FileName,
00162            BOOL Permanent,
00163            BOOL Backup);
00164 
00165 VOID
00166 LogfClose(PLOGFILE LogFile,
00167           BOOL ForceClose);
00168 
00169 VOID LogfCloseAll(VOID);
00170 
00171 DWORD LogfGetOldestRecord(PLOGFILE LogFile);
00172 
00173 DWORD LogfGetCurrentRecord(PLOGFILE LogFile);
00174 
00175 ULONG LogfOffsetByNumber(PLOGFILE LogFile,
00176                          DWORD RecordNumber);
00177 
00178 BOOL LogfAddOffsetInformation(PLOGFILE LogFile,
00179                               ULONG ulNumber,
00180                               ULONG ulOffset);
00181 
00182 BOOL LogfDeleteOffsetInformation(PLOGFILE LogFile,
00183                               ULONG ulNumber);
00184 
00185 PBYTE LogfAllocAndBuildNewRecord(LPDWORD lpRecSize,
00186                                  DWORD dwRecordNumber,
00187                                  WORD wType,
00188                                  WORD wCategory,
00189                                  DWORD dwEventId,
00190                                  LPCWSTR SourceName,
00191                                  LPCWSTR ComputerName,
00192                                  DWORD dwSidLength,
00193                                  PSID lpUserSid,
00194                                  WORD wNumStrings,
00195                                  WCHAR * lpStrings,
00196                                  DWORD dwDataSize,
00197                                  LPVOID lpRawData);
00198 
00199 VOID
00200 LogfReportEvent(WORD wType,
00201                 WORD wCategory,
00202                 DWORD dwEventId,
00203                 WORD wNumStrings,
00204                 WCHAR *lpStrings,
00205                 DWORD dwDataSize,
00206                 LPVOID lpRawData);
00207 
00208 /* eventlog.c */
00209 extern HANDLE MyHeap;
00210 
00211 VOID PRINT_HEADER(PEVENTLOGHEADER header);
00212 
00213 VOID PRINT_RECORD(PEVENTLOGRECORD pRec);
00214 
00215 VOID EventTimeToSystemTime(DWORD EventTime,
00216                            SYSTEMTIME * SystemTime);
00217 
00218 VOID SystemTimeToEventTime(SYSTEMTIME * pSystemTime,
00219                            DWORD * pEventTime);
00220 
00221 /* eventsource.c */
00222 VOID InitEventSourceList(VOID);
00223 
00224 BOOL
00225 LoadEventSources(HKEY hKey,
00226                  PLOGFILE pLogFile);
00227 
00228 PEVENTSOURCE
00229 GetEventSourceByName(LPCWSTR Name);
00230 
00231 
00232 /* logport.c */
00233 NTSTATUS WINAPI PortThreadRoutine(PVOID Param);
00234 
00235 NTSTATUS InitLogPort(VOID);
00236 
00237 NTSTATUS ProcessPortMessage(VOID);
00238 
00239 /* rpc.c */
00240 DWORD WINAPI RpcThreadRoutine(LPVOID lpParameter);
00241 
00242 static __inline void LogfFreeRecord(LPVOID Rec)
00243 {
00244     HeapFree(MyHeap, 0, Rec);
00245 }
00246 
00247 #endif  /* __EVENTLOG_H__ */

Generated on Sat May 26 2012 04:16:34 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.