Cast returned handle values correctly.
[reactos.git] / reactos / base / services / eventlog / rpc.c
index 061afbc..5a0e7b1 100644 (file)
@@ -3,36 +3,37 @@
  * 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);
     }
@@ -40,344 +41,415 @@ DWORD STDCALL RpcThreadRoutine(LPVOID lpParameter)
     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);
 }
@@ -387,3 +459,8 @@ void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
 {
     HeapFree(GetProcessHeap(), 0, ptr);
 }
+
+
+void __RPC_USER IELF_HANDLE_rundown(IELF_HANDLE LogHandle)
+{
+}