mirror of
https://github.com/reactos/reactos.git
synced 2025-06-04 08:50:27 +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
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: services/eventlog/eventlog.c
|
||||
* PURPOSE: Event logging service
|
||||
* PROGRAMMERS: Saveliy Tretiakov (saveliyt@mail.ru)
|
||||
* Eric Kohl
|
||||
* COPYRIGHT: Copyright 2002 Eric Kohl
|
||||
* Copyright 2005 Saveliy Tretiakov
|
||||
*/
|
||||
|
||||
|
||||
|
@ -18,8 +18,11 @@ SERVICE_TABLE_ENTRY ServiceTable[2] =
|
|||
{NULL, NULL}
|
||||
};
|
||||
|
||||
/* GLOBAL VARIABLES */
|
||||
HANDLE MyHeap = 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)
|
||||
{
|
||||
|
@ -51,7 +54,7 @@ VOID CALLBACK ServiceMain(DWORD argc, LPTSTR *argv)
|
|||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
WCHAR SysLogPath[MAX_PATH];
|
||||
WCHAR LogPath[MAX_PATH];
|
||||
MyHeap = HeapCreate(0, 1024*256, 0);
|
||||
|
||||
if(MyHeap==NULL)
|
||||
|
@ -64,16 +67,36 @@ int main(int argc, char *argv[])
|
|||
This will be fixed in near future
|
||||
*/
|
||||
|
||||
GetWindowsDirectory(SysLogPath, MAX_PATH);
|
||||
lstrcat(SysLogPath, L"\\system32\\config\\SysEvent.evt");
|
||||
|
||||
SystemLog = LogfCreate(L"System", SysLogPath);
|
||||
|
||||
if(SystemLog == NULL)
|
||||
GetWindowsDirectory(LogPath, MAX_PATH);
|
||||
if(GetDriveType(LogPath) == DRIVE_CDROM)
|
||||
{
|
||||
DbgPrint("EventLog: FATAL ERROR, can't create %S\n", SysLogPath);
|
||||
HeapDestroy(MyHeap);
|
||||
return 1;
|
||||
DPRINT("LiveCD detected\n");
|
||||
onLiveCD = TRUE;
|
||||
}
|
||||
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);
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS
|
||||
* FILE: eventlog.h
|
||||
* PURPOSE: Event logging service
|
||||
* PROGRAMMER: Saveliy Tretiakov (saveliyt@mail.ru)
|
||||
* 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
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __EVENTLOG_H__
|
||||
#define __EVENTLOG_H__
|
||||
|
||||
|
@ -17,16 +18,18 @@
|
|||
#include <obfuncs.h>
|
||||
#include <iotypes.h>
|
||||
#include <debug.h>
|
||||
#include <pseh/pseh.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 LOGHANDLE unsigned char*
|
||||
#define PLOGHANDLE int*
|
||||
#define LOGHANDLE unsigned int
|
||||
#define PLOGHANDLE unsigned int*
|
||||
|
||||
#define MAJORVER 1
|
||||
#define MINORVER 1
|
||||
|
@ -102,6 +105,8 @@ PLOGFILE LogfListItemByIndex(INT Index);
|
|||
|
||||
PLOGFILE LogfListItemByName(WCHAR *Name);
|
||||
|
||||
INT LogfListItemIndexByName(WCHAR *Name);
|
||||
|
||||
VOID LogfListAddItem(PLOGFILE Item);
|
||||
|
||||
VOID LogfListRemoveItem(PLOGFILE Item);
|
||||
|
@ -199,7 +204,8 @@ NTSTATUS EventLogGetOldestRec(
|
|||
LOGHANDLE Handle,
|
||||
unsigned long *OldestRecNumber);
|
||||
|
||||
NTSTATUS Unknown6(handle_t BindingHandle);
|
||||
NTSTATUS EventLogChangeNotify(
|
||||
handle_t BindingHandle);
|
||||
|
||||
NTSTATUS EventLogOpenW(
|
||||
handle_t BindingHandle,
|
||||
|
@ -250,7 +256,9 @@ NTSTATUS EventLogReportEventW(
|
|||
unsigned char *SID,
|
||||
wchar_t *Strings,
|
||||
unsigned char *Data,
|
||||
unsigned short Flags);
|
||||
unsigned short Flags,
|
||||
unsigned long * unknown1,
|
||||
unsigned long * unknown2);
|
||||
|
||||
NTSTATUS EventLogClearA(
|
||||
handle_t BindingHandle,
|
||||
|
@ -311,13 +319,18 @@ NTSTATUS EventLogReportEventA(
|
|||
unsigned char *SID,
|
||||
char* Strings,
|
||||
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 EventLogDeregisterClusterSvc(
|
||||
handle_t BindingHandle);
|
||||
|
||||
NTSTATUS Unknown20(handle_t BindingHandle);
|
||||
|
||||
NTSTATUS Unknown21(handle_t BindingHandle);
|
||||
NTSTATUS EventLogWriteClusterEvents(
|
||||
handle_t BindingHandle);
|
||||
|
||||
NTSTATUS EventLogGetInfo(
|
||||
handle_t BindingHandle,
|
||||
|
@ -327,6 +340,8 @@ NTSTATUS EventLogGetInfo(
|
|||
unsigned long BufSize,
|
||||
unsigned long *BytesNeeded);
|
||||
|
||||
NTSTATUS EventLogFlush(
|
||||
handle_t BindingHandle);
|
||||
|
||||
|
||||
#endif /* __EVENTLOG_H__ */
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS
|
||||
* PROJECT: ReactOS kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: services/eventlog/file.c
|
||||
* PURPOSE: Event logging service
|
||||
* PROGRAMMER: Saveliy Tretiakov (saveliyt@mail.ru)
|
||||
* COPYRIGHT: Copyright 2005 Saveliy Tretiakov
|
||||
*/
|
||||
|
||||
#include "eventlog.h"
|
||||
|
@ -204,7 +204,7 @@ PLOGFILE LogfCreate(WCHAR *LogName,
|
|||
|
||||
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);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -310,9 +310,29 @@ PLOGFILE LogfListItemByName(WCHAR *Name)
|
|||
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)
|
||||
{
|
||||
INT i = 0;
|
||||
INT i = 1;
|
||||
PLOGFILE Item;
|
||||
Item = LogfListHead();
|
||||
while(Item)
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: services/eventlog/logport.c
|
||||
* PURPOSE: Event logging service
|
||||
* PROGRAMMER: Eric Kohl
|
||||
* Saveliy Tretiakov (saveliyt@mail.ru)
|
||||
* COPYRIGHT: Copyright 2002 Eric Kohl
|
||||
* Copyright 2005 Saveliy Tretiakov
|
||||
*/
|
||||
|
||||
/* INCLUDES *****************************************************************/
|
||||
|
@ -17,7 +17,7 @@ HANDLE ConnectPortHandle = NULL;
|
|||
HANDLE MessagePortHandle = NULL;
|
||||
extern PLOGFILE SystemLog;
|
||||
extern HANDLE MyHeap;
|
||||
|
||||
extern BOOL onLiveCD;
|
||||
|
||||
/* FUNCTIONS ****************************************************************/
|
||||
|
||||
|
@ -205,7 +205,7 @@ NTSTATUS ProcessPortMessage(VOID)
|
|||
PRINT_RECORD(pRec);
|
||||
DPRINT("\n");
|
||||
|
||||
if(SystemLog)
|
||||
if(!onLiveCD && SystemLog)
|
||||
{
|
||||
if(!LogfWriteData(SystemLog, ulRecSize, (PBYTE)pRec))
|
||||
DPRINT("LogfWriteData failed!\n");
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS
|
||||
* PROJECT: ReactOS kernel
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: services/eventlog/rpc.c
|
||||
* PURPOSE: Event logging service
|
||||
* PROGRAMMER: Saveliy Tretiakov (savelity@mail.ru)
|
||||
* COPYRIGHT: Copyright 2005 Saveliy Tretiakov
|
||||
*/
|
||||
|
||||
#include "eventlog.h"
|
||||
|
@ -104,10 +104,11 @@ NTSTATUS EventLogGetOldestRec(
|
|||
}
|
||||
|
||||
|
||||
/* FIXME */
|
||||
NTSTATUS Unknown6(handle_t BindingHandle)
|
||||
/* Function 6 */
|
||||
NTSTATUS EventLogChangeNotify(
|
||||
handle_t BindingHandle)
|
||||
{
|
||||
DPRINT("Unknown6() called\n");
|
||||
DPRINT("EventLogChangeNotify UNIMPLEMENTED\n");
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
@ -116,7 +117,7 @@ NTSTATUS Unknown6(handle_t BindingHandle)
|
|||
NTSTATUS EventLogOpenW(
|
||||
handle_t BindingHandle,
|
||||
LPWSTR ServerName,
|
||||
wchar_t *FileName,
|
||||
wchar_t *LogName,
|
||||
wchar_t *NullStr,
|
||||
unsigned long MajorVer,
|
||||
unsigned long MinorVer,
|
||||
|
@ -186,7 +187,9 @@ NTSTATUS EventLogReportEventW(
|
|||
unsigned char *SID,
|
||||
wchar_t *Strings,
|
||||
unsigned char *Data,
|
||||
unsigned short Flags)
|
||||
unsigned short Flags,
|
||||
unsigned long * unknown1,
|
||||
unsigned long * unknown2)
|
||||
{
|
||||
DPRINT("EventLogReportEventW UNIMPLEMENTED\n");
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
|
@ -225,8 +228,33 @@ NTSTATUS EventLogOpenA(
|
|||
unsigned long MinorVer,
|
||||
PLOGHANDLE Handle)
|
||||
{
|
||||
DPRINT("EventLogOpenA UNIMPLEMENTED\n");
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
UNICODE_STRING logname = {0}, servername={0};
|
||||
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,
|
||||
char* Strings,
|
||||
unsigned char *Data,
|
||||
unsigned short Flags)
|
||||
unsigned short Flags,
|
||||
unsigned long * unknown1,
|
||||
unsigned long * unknown2)
|
||||
{
|
||||
DPRINT("EventLogReportEventA UNIMPLEMENTED\n");
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/* FIXME */
|
||||
NTSTATUS Unknown19(handle_t BindingHandle)
|
||||
/* Function 19 */
|
||||
NTSTATUS EventLogRegisterClusterSvc(
|
||||
handle_t BindingHandle)
|
||||
{
|
||||
DPRINT("Unknown19 called\n");
|
||||
DPRINT("EventLogRegisterClusterSvc UNIMPLEMENTED\n");
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* FIXME */
|
||||
NTSTATUS Unknown20(handle_t BindingHandle)
|
||||
/* Function 20 */
|
||||
NTSTATUS EventLogDeregisterClusterSvc(
|
||||
handle_t BindingHandle)
|
||||
{
|
||||
DPRINT("Unknown20 called\n");
|
||||
DPRINT("EventLogDeregisterClusterSvc UNIMPLEMENTED\n");
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
/* FIXME */
|
||||
NTSTATUS Unknown21(handle_t BindingHandle)
|
||||
/* Function 21 */
|
||||
NTSTATUS EventLogWriteClusterEvents(
|
||||
handle_t BindingHandle)
|
||||
{
|
||||
DPRINT("Unknown21 called\n");
|
||||
DPRINT("EventLogWriteClusterEvents UNIMPLEMENTED\n");
|
||||
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)
|
||||
{
|
||||
return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
|
||||
|
|
Loading…
Reference in a new issue