Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygeneventlog.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
1.7.6.1
|