* LICENSE: GPL - See COPYING in the top level directory
* FILE: services/eventlog/rpc.c
* PURPOSE: Event logging service
- * COPYRIGHT: Copyright 2005 Saveliy Tretiakov
+ * COPYRIGHT: Copyright 2005 Saveliy Tretiakov
*/
-
+
+/* INCLUDES *****************************************************************/
+
#include "eventlog.h"
+/* FUNCTIONS ****************************************************************/
+
DWORD STDCALL RpcThreadRoutine(LPVOID lpParameter)
{
RPC_STATUS Status;
- Status = RpcServerUseProtseqEpW(L"ncacn_np",
- 20,
- L"\\pipe\\EventLog",
- NULL);
- if(Status != RPC_S_OK)
+ Status = RpcServerUseProtseqEpW(L"ncacn_np", 20, L"\\pipe\\EventLog", NULL);
+ if (Status != RPC_S_OK)
{
DPRINT("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
return 0;
}
- Status = RpcServerRegisterIf(eventlog_ServerIfHandle, NULL, NULL);
-
- if(Status != RPC_S_OK)
+ Status = RpcServerRegisterIf(eventlog_v0_0_s_ifspec, NULL, NULL);
+
+ if (Status != RPC_S_OK)
{
DPRINT("RpcServerRegisterIf() failed (Status %lx)\n", Status);
return 0;
}
Status = RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT, FALSE);
-
- if(Status != RPC_S_OK)
+
+ if (Status != RPC_S_OK)
{
DPRINT("RpcServerListen() failed (Status %lx)\n", Status);
}
return 0;
}
+
/* Function 0 */
-NTSTATUS EventLogClearW(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- wchar_t *BackupName)
+NTSTATUS ElfrClearELFW(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ PRPC_UNICODE_STRING BackupFileName)
{
- DPRINT("EventLogClearW UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 1 */
-NTSTATUS EventLogBackupW(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- wchar_t *FileName)
+NTSTATUS ElfrBackupELFW(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ PRPC_UNICODE_STRING BackupFileName)
{
- DPRINT("EventLogBackupW UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
-
+
/* Function 2 */
-NTSTATUS EventLogClose(
- handle_t BindingHandle,
- PLOGHANDLE Handle)
+NTSTATUS ElfrCloseEL(
+ handle_t BindingHandle,
+ IELF_HANDLE *LogHandle)
{
- DPRINT("EventLogClose UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
-
+
/* Function 3 */
-NTSTATUS EventLogUnregSrc(
- handle_t BindingHandle,
- PLOGHANDLE Handle)
+NTSTATUS ElfrDeregisterEventSource(
+ handle_t BindingHandle,
+ IELF_HANDLE *LogHandle)
{
- DPRINT("EventLogUnregSrc UNIMPLEMENTED\n");
- return STATUS_NOT_IMPLEMENTED;
+ UNIMPLEMENTED;
+ return STATUS_SUCCESS;
}
/* Function 4 */
-NTSTATUS EventLogRecordsNumber(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- unsigned long *RecordsNumber)
+NTSTATUS ElfrNumberOfRecords(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ DWORD *NumberOfRecords)
{
- DPRINT("EventLogRecordsNumber UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 5 */
-NTSTATUS EventLogGetOldestRec(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- unsigned long *OldestRecNumber)
+NTSTATUS ElfrOldestRecord(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ DWORD *OldestRecordNumber)
{
- DPRINT("EventLogGetOldestRec UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 6 */
-NTSTATUS EventLogChangeNotify(
- handle_t BindingHandle)
+NTSTATUS ElfrChangeNotify(
+ handle_t BindingHandle,
+ IELF_HANDLE *LogHandle,
+ RPC_CLIENT_ID ClientId,
+ DWORD Event)
{
- DPRINT("EventLogChangeNotify UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 7 */
-NTSTATUS EventLogOpenW(
- handle_t BindingHandle,
- LPWSTR ServerName,
- wchar_t *LogName,
- wchar_t *NullStr,
- unsigned long MajorVer,
- unsigned long MinorVer,
- PLOGHANDLE Handle)
+NTSTATUS ElfrOpenELW(
+ handle_t BindingHandle,
+ EVENTLOG_HANDLE_W UNCServerName,
+ PRPC_UNICODE_STRING ModuleName,
+ PRPC_UNICODE_STRING RegModuleName,
+ DWORD MajorVersion,
+ DWORD MinorVersion,
+ IELF_HANDLE *LogHandle)
{
- DPRINT("EventLogOpenW UNIMPLEMENTED\n");
- return STATUS_NOT_IMPLEMENTED;
+ UNIMPLEMENTED;
+ *LogHandle = (IELF_HANDLE)1;
+ return STATUS_SUCCESS;
}
-
+
/* Function 8 */
-NTSTATUS EventLogRegSrcW(
- handle_t BindingHandle,
- LPWSTR ServerName,
- wchar_t *LogName,
- wchar_t *NullStr,
- unsigned long MajorVer,
- unsigned long MinorVer,
- PLOGHANDLE Handle)
+NTSTATUS ElfrRegisterEventSourceW(
+ handle_t BindingHandle,
+ EVENTLOG_HANDLE_W UNCServerName,
+ PRPC_UNICODE_STRING ModuleName,
+ PRPC_UNICODE_STRING RegModuleName,
+ DWORD MajorVersion,
+ DWORD MinorVersion,
+ IELF_HANDLE *LogHandle)
{
- DPRINT("EventLogRegSrcW UNIMPLEMENTED\n");
- return STATUS_NOT_IMPLEMENTED;
+ UNIMPLEMENTED;
+ *LogHandle = (IELF_HANDLE)1;
+ return STATUS_SUCCESS;
}
-
+
/* Function 9 */
-NTSTATUS EventLogOpenBackupW(
- handle_t BindingHandle,
- LPWSTR ServerName,
- wchar_t *BackupName,
- unsigned long MajorVer,
- unsigned long MinorVer,
- PLOGHANDLE Handle)
+NTSTATUS ElfrOpenBELW(
+ handle_t BindingHandle,
+ EVENTLOG_HANDLE_W UNCServerName,
+ PRPC_UNICODE_STRING BackupFileName,
+ DWORD MajorVersion,
+ DWORD MinorVersion,
+ IELF_HANDLE *LogHandle)
{
- DPRINT("EventLogOpenBackupW UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 10 */
-NTSTATUS EventLogReadW(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- unsigned long Flags,
- unsigned long Offset,
- unsigned long BufSize,
- unsigned char *Buffer,
- unsigned long *BytesRead,
- unsigned long *BytesNeeded)
+NTSTATUS ElfrReadELW(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ DWORD ReadFlags,
+ DWORD RecordOffset,
+ RULONG NumberOfBytesToRead,
+ BYTE *Buffer,
+ DWORD *NumberOfBytesRead,
+ DWORD *MinNumberOfBytesNeeded)
{
- DPRINT("EventLogReadW UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 11 */
-NTSTATUS EventLogReportEventW(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- unsigned long Time,
- unsigned short Type,
- unsigned short Category,
- unsigned long ID,
- unsigned short NumStrings,
- unsigned long DataSize,
- wchar_t *ComputerName,
- unsigned char *SID,
- wchar_t *Strings,
- unsigned char *Data,
- unsigned short Flags,
- unsigned long * unknown1,
- unsigned long * unknown2)
+NTSTATUS ElfrReportEventW(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ DWORD Time,
+ USHORT EventType,
+ USHORT EventCategory,
+ DWORD EventID,
+ USHORT NumStrings,
+ DWORD DataSize,
+ PRPC_UNICODE_STRING ComputerName,
+ PRPC_SID UserSID,
+ PRPC_UNICODE_STRING Strings[],
+ BYTE *Data,
+ USHORT Flags,
+ DWORD *RecordNumber,
+ DWORD *TimeWritten)
{
- DPRINT("EventLogReportEventW UNIMPLEMENTED\n");
- return STATUS_NOT_IMPLEMENTED;
+ USHORT i;
+
+ /* partial stub */
+ for (i = 0; i < NumStrings; i++)
+ {
+ switch (EventType)
+ {
+ case EVENTLOG_SUCCESS:
+ DPRINT1("Success: %S\n", Strings[i]);
+ break;
+
+ case EVENTLOG_ERROR_TYPE:
+ DPRINT1("Error: %S\n", Strings[i]);
+ break;
+
+ case EVENTLOG_WARNING_TYPE:
+ DPRINT1("Warning: %S\n", Strings[i]);
+ break;
+
+ case EVENTLOG_INFORMATION_TYPE:
+ DPRINT1("Info: %S\n", Strings[i]);
+ break;
+
+ default:
+ DPRINT1("Type %hu: %S\n", EventType, Strings[i]);
+ break;
+ }
+ }
+
+ return STATUS_SUCCESS;
}
-
+
/* Function 12 */
-NTSTATUS EventLogClearA(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- char *BackupName)
+NTSTATUS ElfrClearELFA(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ PRPC_STRING BackupFileName)
{
- DPRINT("EventLogClearA UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 13 */
-NTSTATUS EventLogBackupA(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- char *BackupName)
+NTSTATUS ElfrBackupELFA(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ PRPC_STRING BackupFileName)
{
- DPRINT("EventLogBackupA UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 14 */
-NTSTATUS EventLogOpenA(
- handle_t BindingHandle,
- LPSTR ServerName,
- char *LogName,
- char *NullStr,
- unsigned long MajorVer,
- unsigned long MinorVer,
- PLOGHANDLE Handle)
+NTSTATUS ElfrOpenELA(
+ handle_t BindingHandle,
+ EVENTLOG_HANDLE_A UNCServerName,
+ PRPC_STRING ModuleName,
+ PRPC_STRING RegModuleName,
+ DWORD MajorVersion,
+ DWORD MinorVersion,
+ IELF_HANDLE *LogHandle)
{
- 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;
+ UNICODE_STRING UNCServerNameW = { 0, };
+ UNICODE_STRING ModuleNameW = { 0, };
+ UNICODE_STRING RegModuleNameW = { 0, };
+ NTSTATUS Status;
+
+ if (UNCServerName &&
+ !RtlCreateUnicodeStringFromAsciiz(&UNCServerNameW, UNCServerName))
+ {
+ return STATUS_NO_MEMORY;
+ }
+
+ if (ModuleName &&
+ !RtlAnsiStringToUnicodeString(&ModuleNameW, (PANSI_STRING)ModuleName, TRUE))
+ {
+ RtlFreeUnicodeString(&UNCServerNameW);
+ return STATUS_NO_MEMORY;
+ }
+
+ if (RegModuleName &&
+ !RtlAnsiStringToUnicodeString(&RegModuleNameW, (PANSI_STRING)RegModuleName, TRUE))
+ {
+ RtlFreeUnicodeString(&UNCServerNameW);
+ RtlFreeUnicodeString(&ModuleNameW);
+ return STATUS_NO_MEMORY;
+ }
+
+ Status = ElfrOpenELW(
+ BindingHandle,
+ UNCServerName ? UNCServerNameW.Buffer : NULL,
+ ModuleName ? (PRPC_UNICODE_STRING)&ModuleNameW : NULL,
+ RegModuleName ? (PRPC_UNICODE_STRING)&RegModuleNameW : NULL,
+ MajorVersion,
+ MinorVersion,
+ LogHandle);
+
+ RtlFreeUnicodeString(&UNCServerNameW);
+ RtlFreeUnicodeString(&ModuleNameW);
+ RtlFreeUnicodeString(&RegModuleNameW);
+
+ return Status;
}
/* Function 15 */
-NTSTATUS EventLogRegSrcA(
- handle_t BindingHandle,
- LPSTR ServerName,
- char *LogName,
- char *NullStr,
- unsigned long MajorVer,
- unsigned long MinorVer,
- PLOGHANDLE Handle)
+NTSTATUS ElfrRegisterEventSourceA(
+ handle_t BindingHandle,
+ EVENTLOG_HANDLE_A UNCServerName,
+ PRPC_STRING ModuleName,
+ PRPC_STRING RegModuleName,
+ DWORD MajorVersion,
+ DWORD MinorVersion,
+ IELF_HANDLE *LogHandle)
{
- DPRINT("EventLogRegSrcA UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 16 */
-NTSTATUS EventLogOpenBackupA(
- handle_t BindingHandle,
- LPSTR ServerName,
- char *BackupName,
- unsigned long MajorVer,
- unsigned long MinorVer,
- PLOGHANDLE Handle)
+NTSTATUS ElfrOpenBELA(
+ handle_t BindingHandle,
+ EVENTLOG_HANDLE_A UNCServerName,
+ PRPC_STRING BackupFileName,
+ DWORD MajorVersion,
+ DWORD MinorVersion,
+ IELF_HANDLE *LogHandle)
{
- DPRINT("EventLogOpenBackupA UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 17 */
-NTSTATUS EventLogReadA(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- unsigned long Flags,
- unsigned long Offset,
- unsigned long BufSize,
- unsigned char *Buffer,
- unsigned long *BytesRead,
- unsigned long *BytesNeeded)
+NTSTATUS ElfrReadELA(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ DWORD ReadFlags,
+ DWORD RecordOffset,
+ RULONG NumberOfBytesToRead,
+ BYTE *Buffer,
+ DWORD *NumberOfBytesRead,
+ DWORD *MinNumberOfBytesNeeded)
{
- DPRINT("EventLogReadA UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 18 */
-NTSTATUS EventLogReportEventA(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- unsigned long Time,
- unsigned short Type,
- unsigned short Category,
- unsigned long ID,
- unsigned short NumStrings,
- unsigned long DataSize,
- char *ComputerName,
- unsigned char *SID,
- char* Strings,
- unsigned char *Data,
- unsigned short Flags,
- unsigned long * unknown1,
- unsigned long * unknown2)
+NTSTATUS ElfrReportEventA(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ DWORD Time,
+ USHORT EventType,
+ USHORT EventCategory,
+ DWORD EventID,
+ USHORT NumStrings,
+ DWORD DataSize,
+ PRPC_STRING ComputerName,
+ PRPC_SID UserSID,
+ PRPC_STRING Strings[],
+ BYTE *Data,
+ USHORT Flags,
+ DWORD *RecordNumber,
+ DWORD *TimeWritten)
{
- DPRINT("EventLogReportEventA UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 19 */
-NTSTATUS EventLogRegisterClusterSvc(
- handle_t BindingHandle)
+NTSTATUS ElfrRegisterClusterSvc(
+ handle_t BindingHandle)
{
- DPRINT("EventLogRegisterClusterSvc UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
-
-
+
+
/* Function 20 */
-NTSTATUS EventLogDeregisterClusterSvc(
- handle_t BindingHandle)
+NTSTATUS ElfrDeregisterClusterSvc(
+ handle_t BindingHandle)
{
- DPRINT("EventLogDeregisterClusterSvc UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 21 */
-NTSTATUS EventLogWriteClusterEvents(
- handle_t BindingHandle)
+NTSTATUS ElfrWriteClusterEvents(
+ handle_t BindingHandle)
{
- DPRINT("EventLogWriteClusterEvents UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 22 */
-NTSTATUS EventLogGetInfo(
- handle_t BindingHandle,
- LOGHANDLE Handle,
- unsigned long InfoLevel,
- unsigned char *Buffer,
- unsigned long BufSize,
- unsigned long *BytesNeeded)
+NTSTATUS ElfrGetLogInformation(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ DWORD InfoLevel,
+ BYTE *Buffer,
+ DWORD cbBufSize,
+ DWORD *pcbBytesNeeded)
{
- DPRINT("EventLogGetInfo UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/* Function 23 */
-NTSTATUS EventLogFlush(
- handle_t BindingHandle)
+NTSTATUS ElfrFlushEL(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle)
{
- DbgPrint("EventLogFlush UNIMPLEMENTED\n");
+ UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
+/* Function 24 */
+NTSTATUS ElfrReportEventAndSourceW(
+ handle_t BindingHandle,
+ IELF_HANDLE LogHandle,
+ DWORD Time,
+ USHORT EventType,
+ USHORT EventCategory,
+ ULONG EventID,
+ PRPC_UNICODE_STRING SourceName,
+ USHORT NumStrings,
+ DWORD DataSize,
+ PRPC_UNICODE_STRING ComputerName,
+ PRPC_SID UserSID,
+ PRPC_UNICODE_STRING Strings[],
+ BYTE *Data,
+ USHORT Flags,
+ DWORD *RecordNumber,
+ DWORD *TimeWritten)
+{
+ UNIMPLEMENTED;
+ 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);
}
{
HeapFree(GetProcessHeap(), 0, ptr);
}
+
+
+void __RPC_USER IELF_HANDLE_rundown(IELF_HANDLE LogHandle)
+{
+}