mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 20:25:39 +00:00
Don't create files when booting from CD
Implement EventLogOpenA (wrapper over unimplemented EventLogOpenW) svn path=/trunk/; revision=21224
This commit is contained in:
parent
8f1b7df719
commit
3f4ded7db8
5 changed files with 159 additions and 58 deletions
|
@ -1,10 +1,10 @@
|
||||||
/*
|
/*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
* FILE: services/eventlog/eventlog.c
|
* FILE: services/eventlog/eventlog.c
|
||||||
* PURPOSE: Event logging service
|
* PURPOSE: Event logging service
|
||||||
* PROGRAMMERS: Saveliy Tretiakov (saveliyt@mail.ru)
|
* COPYRIGHT: Copyright 2002 Eric Kohl
|
||||||
* Eric Kohl
|
* Copyright 2005 Saveliy Tretiakov
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,8 +18,11 @@ SERVICE_TABLE_ENTRY ServiceTable[2] =
|
||||||
{NULL, NULL}
|
{NULL, NULL}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* GLOBAL VARIABLES */
|
||||||
HANDLE MyHeap = NULL;
|
HANDLE MyHeap = NULL;
|
||||||
PLOGFILE SystemLog = NULL;
|
PLOGFILE SystemLog = NULL;
|
||||||
|
PLOGFILE ApplicationLog = NULL;
|
||||||
|
BOOL onLiveCD = FALSE; // On livecd events will go to debug output only
|
||||||
|
|
||||||
VOID CALLBACK ServiceMain(DWORD argc, LPTSTR *argv)
|
VOID CALLBACK ServiceMain(DWORD argc, LPTSTR *argv)
|
||||||
{
|
{
|
||||||
|
@ -51,7 +54,7 @@ VOID CALLBACK ServiceMain(DWORD argc, LPTSTR *argv)
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
WCHAR SysLogPath[MAX_PATH];
|
WCHAR LogPath[MAX_PATH];
|
||||||
MyHeap = HeapCreate(0, 1024*256, 0);
|
MyHeap = HeapCreate(0, 1024*256, 0);
|
||||||
|
|
||||||
if(MyHeap==NULL)
|
if(MyHeap==NULL)
|
||||||
|
@ -64,16 +67,36 @@ int main(int argc, char *argv[])
|
||||||
This will be fixed in near future
|
This will be fixed in near future
|
||||||
*/
|
*/
|
||||||
|
|
||||||
GetWindowsDirectory(SysLogPath, MAX_PATH);
|
GetWindowsDirectory(LogPath, MAX_PATH);
|
||||||
lstrcat(SysLogPath, L"\\system32\\config\\SysEvent.evt");
|
if(GetDriveType(LogPath) == DRIVE_CDROM)
|
||||||
|
|
||||||
SystemLog = LogfCreate(L"System", SysLogPath);
|
|
||||||
|
|
||||||
if(SystemLog == NULL)
|
|
||||||
{
|
{
|
||||||
DbgPrint("EventLog: FATAL ERROR, can't create %S\n", SysLogPath);
|
DPRINT("LiveCD detected\n");
|
||||||
HeapDestroy(MyHeap);
|
onLiveCD = TRUE;
|
||||||
return 1;
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
lstrcat(LogPath, L"\\system32\\config\\SysEvent.evt");
|
||||||
|
|
||||||
|
SystemLog = LogfCreate(L"System", LogPath);
|
||||||
|
|
||||||
|
if(SystemLog == NULL)
|
||||||
|
{
|
||||||
|
DbgPrint("EventLog: FATAL ERROR, can't create %S\n", LogPath);
|
||||||
|
HeapDestroy(MyHeap);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
GetWindowsDirectory(LogPath, MAX_PATH);
|
||||||
|
lstrcat(LogPath, L"\\system32\\config\\AppEvent.evt");
|
||||||
|
|
||||||
|
ApplicationLog = LogfCreate(L"Application", LogPath);
|
||||||
|
|
||||||
|
if(ApplicationLog == NULL)
|
||||||
|
{
|
||||||
|
DbgPrint("EventLog: FATAL ERROR, can't create %S\n", LogPath);
|
||||||
|
HeapDestroy(MyHeap);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StartServiceCtrlDispatcher(ServiceTable);
|
StartServiceCtrlDispatcher(ServiceTable);
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
/*
|
/*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* PROJECT: ReactOS kernel
|
||||||
* PROJECT: ReactOS
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
* FILE: eventlog.h
|
* FILE: services/eventlog/eventlog.h
|
||||||
* PURPOSE: Event logging service
|
* PURPOSE: Event logging service
|
||||||
* PROGRAMMER: Saveliy Tretiakov (saveliyt@mail.ru)
|
* COPYRIGHT: Copyright 2005 Saveliy Tretiakov
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef __EVENTLOG_H__
|
#ifndef __EVENTLOG_H__
|
||||||
#define __EVENTLOG_H__
|
#define __EVENTLOG_H__
|
||||||
|
|
||||||
|
@ -17,16 +18,18 @@
|
||||||
#include <obfuncs.h>
|
#include <obfuncs.h>
|
||||||
#include <iotypes.h>
|
#include <iotypes.h>
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
#include <pseh/pseh.h>
|
||||||
#include "eventlogrpc_s.h"
|
#include "eventlogrpc_s.h"
|
||||||
|
|
||||||
|
|
||||||
typedef struct _IO_ERROR_LPC
|
typedef struct _IO_ERROR_LPC
|
||||||
{
|
{
|
||||||
PORT_MESSAGE Header;
|
PORT_MESSAGE Header;
|
||||||
IO_ERROR_LOG_MESSAGE Message;
|
IO_ERROR_LOG_MESSAGE Message;
|
||||||
} IO_ERROR_LPC, *PIO_ERROR_LPC;
|
} IO_ERROR_LPC, *PIO_ERROR_LPC;
|
||||||
|
|
||||||
#define LOGHANDLE unsigned char*
|
#define LOGHANDLE unsigned int
|
||||||
#define PLOGHANDLE int*
|
#define PLOGHANDLE unsigned int*
|
||||||
|
|
||||||
#define MAJORVER 1
|
#define MAJORVER 1
|
||||||
#define MINORVER 1
|
#define MINORVER 1
|
||||||
|
@ -102,6 +105,8 @@ PLOGFILE LogfListItemByIndex(INT Index);
|
||||||
|
|
||||||
PLOGFILE LogfListItemByName(WCHAR *Name);
|
PLOGFILE LogfListItemByName(WCHAR *Name);
|
||||||
|
|
||||||
|
INT LogfListItemIndexByName(WCHAR *Name);
|
||||||
|
|
||||||
VOID LogfListAddItem(PLOGFILE Item);
|
VOID LogfListAddItem(PLOGFILE Item);
|
||||||
|
|
||||||
VOID LogfListRemoveItem(PLOGFILE Item);
|
VOID LogfListRemoveItem(PLOGFILE Item);
|
||||||
|
@ -199,7 +204,8 @@ NTSTATUS EventLogGetOldestRec(
|
||||||
LOGHANDLE Handle,
|
LOGHANDLE Handle,
|
||||||
unsigned long *OldestRecNumber);
|
unsigned long *OldestRecNumber);
|
||||||
|
|
||||||
NTSTATUS Unknown6(handle_t BindingHandle);
|
NTSTATUS EventLogChangeNotify(
|
||||||
|
handle_t BindingHandle);
|
||||||
|
|
||||||
NTSTATUS EventLogOpenW(
|
NTSTATUS EventLogOpenW(
|
||||||
handle_t BindingHandle,
|
handle_t BindingHandle,
|
||||||
|
@ -250,7 +256,9 @@ NTSTATUS EventLogReportEventW(
|
||||||
unsigned char *SID,
|
unsigned char *SID,
|
||||||
wchar_t *Strings,
|
wchar_t *Strings,
|
||||||
unsigned char *Data,
|
unsigned char *Data,
|
||||||
unsigned short Flags);
|
unsigned short Flags,
|
||||||
|
unsigned long * unknown1,
|
||||||
|
unsigned long * unknown2);
|
||||||
|
|
||||||
NTSTATUS EventLogClearA(
|
NTSTATUS EventLogClearA(
|
||||||
handle_t BindingHandle,
|
handle_t BindingHandle,
|
||||||
|
@ -311,13 +319,18 @@ NTSTATUS EventLogReportEventA(
|
||||||
unsigned char *SID,
|
unsigned char *SID,
|
||||||
char* Strings,
|
char* Strings,
|
||||||
unsigned char *Data,
|
unsigned char *Data,
|
||||||
unsigned short Flags);
|
unsigned short Flags,
|
||||||
|
unsigned long * unknown1,
|
||||||
|
unsigned long * unknown2);
|
||||||
|
|
||||||
NTSTATUS Unknown19(handle_t BindingHandle);
|
NTSTATUS EventLogRegisterClusterSvc(
|
||||||
|
handle_t BindingHandle);
|
||||||
|
|
||||||
NTSTATUS Unknown20(handle_t BindingHandle);
|
NTSTATUS EventLogDeregisterClusterSvc(
|
||||||
|
handle_t BindingHandle);
|
||||||
|
|
||||||
NTSTATUS Unknown21(handle_t BindingHandle);
|
NTSTATUS EventLogWriteClusterEvents(
|
||||||
|
handle_t BindingHandle);
|
||||||
|
|
||||||
NTSTATUS EventLogGetInfo(
|
NTSTATUS EventLogGetInfo(
|
||||||
handle_t BindingHandle,
|
handle_t BindingHandle,
|
||||||
|
@ -327,6 +340,8 @@ NTSTATUS EventLogGetInfo(
|
||||||
unsigned long BufSize,
|
unsigned long BufSize,
|
||||||
unsigned long *BytesNeeded);
|
unsigned long *BytesNeeded);
|
||||||
|
|
||||||
|
NTSTATUS EventLogFlush(
|
||||||
|
handle_t BindingHandle);
|
||||||
|
|
||||||
|
|
||||||
#endif /* __EVENTLOG_H__ */
|
#endif /* __EVENTLOG_H__ */
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/*
|
/*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* PROJECT: ReactOS kernel
|
||||||
* PROJECT: ReactOS
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
* FILE: services/eventlog/file.c
|
* FILE: services/eventlog/file.c
|
||||||
* PURPOSE: Event logging service
|
* PURPOSE: Event logging service
|
||||||
* PROGRAMMER: Saveliy Tretiakov (saveliyt@mail.ru)
|
* COPYRIGHT: Copyright 2005 Saveliy Tretiakov
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "eventlog.h"
|
#include "eventlog.h"
|
||||||
|
@ -204,7 +204,7 @@ PLOGFILE LogfCreate(WCHAR *LogName,
|
||||||
|
|
||||||
if(LogFile->hFile == INVALID_HANDLE_VALUE)
|
if(LogFile->hFile == INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
DbgPrint("EventLog: Can't open file %S.\n", FileName);
|
DPRINT("Can't create file %S.\n", FileName);
|
||||||
HeapFree(MyHeap, 0, LogFile);
|
HeapFree(MyHeap, 0, LogFile);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -310,9 +310,29 @@ PLOGFILE LogfListItemByName(WCHAR *Name)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* index starting from 1 */
|
||||||
|
INT LogfListItemIndexByName(WCHAR *Name)
|
||||||
|
{
|
||||||
|
PLOGFILE Item;
|
||||||
|
INT i = 1;
|
||||||
|
|
||||||
|
Item = LogfListHead();
|
||||||
|
|
||||||
|
while(Item)
|
||||||
|
{
|
||||||
|
if(Item->LogName && lstrcmpW(Item->LogName, Name)==0)
|
||||||
|
return i;
|
||||||
|
Item = (PLOGFILE)Item->Next;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* index starting from 1 */
|
||||||
PLOGFILE LogfListItemByIndex(INT Index)
|
PLOGFILE LogfListItemByIndex(INT Index)
|
||||||
{
|
{
|
||||||
INT i = 0;
|
INT i = 1;
|
||||||
PLOGFILE Item;
|
PLOGFILE Item;
|
||||||
Item = LogfListHead();
|
Item = LogfListHead();
|
||||||
while(Item)
|
while(Item)
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
/*
|
/*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
* FILE: services/eventlog/logport.c
|
* FILE: services/eventlog/logport.c
|
||||||
* PURPOSE: Event logging service
|
* PURPOSE: Event logging service
|
||||||
* PROGRAMMER: Eric Kohl
|
* COPYRIGHT: Copyright 2002 Eric Kohl
|
||||||
* Saveliy Tretiakov (saveliyt@mail.ru)
|
* Copyright 2005 Saveliy Tretiakov
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* INCLUDES *****************************************************************/
|
/* INCLUDES *****************************************************************/
|
||||||
|
@ -17,7 +17,7 @@ HANDLE ConnectPortHandle = NULL;
|
||||||
HANDLE MessagePortHandle = NULL;
|
HANDLE MessagePortHandle = NULL;
|
||||||
extern PLOGFILE SystemLog;
|
extern PLOGFILE SystemLog;
|
||||||
extern HANDLE MyHeap;
|
extern HANDLE MyHeap;
|
||||||
|
extern BOOL onLiveCD;
|
||||||
|
|
||||||
/* FUNCTIONS ****************************************************************/
|
/* FUNCTIONS ****************************************************************/
|
||||||
|
|
||||||
|
@ -205,7 +205,7 @@ NTSTATUS ProcessPortMessage(VOID)
|
||||||
PRINT_RECORD(pRec);
|
PRINT_RECORD(pRec);
|
||||||
DPRINT("\n");
|
DPRINT("\n");
|
||||||
|
|
||||||
if(SystemLog)
|
if(!onLiveCD && SystemLog)
|
||||||
{
|
{
|
||||||
if(!LogfWriteData(SystemLog, ulRecSize, (PBYTE)pRec))
|
if(!LogfWriteData(SystemLog, ulRecSize, (PBYTE)pRec))
|
||||||
DPRINT("LogfWriteData failed!\n");
|
DPRINT("LogfWriteData failed!\n");
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/*
|
/*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* PROJECT: ReactOS kernel
|
||||||
* PROJECT: ReactOS
|
* LICENSE: GPL - See COPYING in the top level directory
|
||||||
* FILE: services/eventlog/rpc.c
|
* FILE: services/eventlog/rpc.c
|
||||||
* PURPOSE: Event logging service
|
* PURPOSE: Event logging service
|
||||||
* PROGRAMMER: Saveliy Tretiakov (savelity@mail.ru)
|
* COPYRIGHT: Copyright 2005 Saveliy Tretiakov
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "eventlog.h"
|
#include "eventlog.h"
|
||||||
|
@ -104,10 +104,11 @@ NTSTATUS EventLogGetOldestRec(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* FIXME */
|
/* Function 6 */
|
||||||
NTSTATUS Unknown6(handle_t BindingHandle)
|
NTSTATUS EventLogChangeNotify(
|
||||||
|
handle_t BindingHandle)
|
||||||
{
|
{
|
||||||
DPRINT("Unknown6() called\n");
|
DPRINT("EventLogChangeNotify UNIMPLEMENTED\n");
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +117,7 @@ NTSTATUS Unknown6(handle_t BindingHandle)
|
||||||
NTSTATUS EventLogOpenW(
|
NTSTATUS EventLogOpenW(
|
||||||
handle_t BindingHandle,
|
handle_t BindingHandle,
|
||||||
LPWSTR ServerName,
|
LPWSTR ServerName,
|
||||||
wchar_t *FileName,
|
wchar_t *LogName,
|
||||||
wchar_t *NullStr,
|
wchar_t *NullStr,
|
||||||
unsigned long MajorVer,
|
unsigned long MajorVer,
|
||||||
unsigned long MinorVer,
|
unsigned long MinorVer,
|
||||||
|
@ -186,7 +187,9 @@ NTSTATUS EventLogReportEventW(
|
||||||
unsigned char *SID,
|
unsigned char *SID,
|
||||||
wchar_t *Strings,
|
wchar_t *Strings,
|
||||||
unsigned char *Data,
|
unsigned char *Data,
|
||||||
unsigned short Flags)
|
unsigned short Flags,
|
||||||
|
unsigned long * unknown1,
|
||||||
|
unsigned long * unknown2)
|
||||||
{
|
{
|
||||||
DPRINT("EventLogReportEventW UNIMPLEMENTED\n");
|
DPRINT("EventLogReportEventW UNIMPLEMENTED\n");
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
@ -225,8 +228,33 @@ NTSTATUS EventLogOpenA(
|
||||||
unsigned long MinorVer,
|
unsigned long MinorVer,
|
||||||
PLOGHANDLE Handle)
|
PLOGHANDLE Handle)
|
||||||
{
|
{
|
||||||
DPRINT("EventLogOpenA UNIMPLEMENTED\n");
|
UNICODE_STRING logname = {0}, servername={0};
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
NTSTATUS status;
|
||||||
|
|
||||||
|
if(LogName && !RtlCreateUnicodeStringFromAsciiz(&logname, LogName))
|
||||||
|
{
|
||||||
|
return STATUS_NO_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ServerName &&
|
||||||
|
!RtlCreateUnicodeStringFromAsciiz(&servername, ServerName))
|
||||||
|
{
|
||||||
|
RtlFreeUnicodeString(&servername);
|
||||||
|
return STATUS_NO_MEMORY;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = EventLogOpenW(BindingHandle,
|
||||||
|
servername.Buffer,
|
||||||
|
logname.Buffer,
|
||||||
|
L"",
|
||||||
|
MajorVer,
|
||||||
|
MinorVer,
|
||||||
|
Handle);
|
||||||
|
|
||||||
|
RtlFreeUnicodeString(&servername);
|
||||||
|
RtlFreeUnicodeString(&logname);
|
||||||
|
|
||||||
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -289,33 +317,38 @@ NTSTATUS EventLogReportEventA(
|
||||||
unsigned char *SID,
|
unsigned char *SID,
|
||||||
char* Strings,
|
char* Strings,
|
||||||
unsigned char *Data,
|
unsigned char *Data,
|
||||||
unsigned short Flags)
|
unsigned short Flags,
|
||||||
|
unsigned long * unknown1,
|
||||||
|
unsigned long * unknown2)
|
||||||
{
|
{
|
||||||
DPRINT("EventLogReportEventA UNIMPLEMENTED\n");
|
DPRINT("EventLogReportEventA UNIMPLEMENTED\n");
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* FIXME */
|
/* Function 19 */
|
||||||
NTSTATUS Unknown19(handle_t BindingHandle)
|
NTSTATUS EventLogRegisterClusterSvc(
|
||||||
|
handle_t BindingHandle)
|
||||||
{
|
{
|
||||||
DPRINT("Unknown19 called\n");
|
DPRINT("EventLogRegisterClusterSvc UNIMPLEMENTED\n");
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* FIXME */
|
/* Function 20 */
|
||||||
NTSTATUS Unknown20(handle_t BindingHandle)
|
NTSTATUS EventLogDeregisterClusterSvc(
|
||||||
|
handle_t BindingHandle)
|
||||||
{
|
{
|
||||||
DPRINT("Unknown20 called\n");
|
DPRINT("EventLogDeregisterClusterSvc UNIMPLEMENTED\n");
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* FIXME */
|
/* Function 21 */
|
||||||
NTSTATUS Unknown21(handle_t BindingHandle)
|
NTSTATUS EventLogWriteClusterEvents(
|
||||||
|
handle_t BindingHandle)
|
||||||
{
|
{
|
||||||
DPRINT("Unknown21 called\n");
|
DPRINT("EventLogWriteClusterEvents UNIMPLEMENTED\n");
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -334,6 +367,16 @@ NTSTATUS EventLogGetInfo(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Function 23 */
|
||||||
|
NTSTATUS EventLogFlush(
|
||||||
|
handle_t BindingHandle)
|
||||||
|
{
|
||||||
|
DbgPrint("EventLogFlush UNIMPLEMENTED\n");
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void __RPC_FAR * __RPC_USER midl_user_allocate(size_t len)
|
void __RPC_FAR * __RPC_USER midl_user_allocate(size_t len)
|
||||||
{
|
{
|
||||||
return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
|
return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue