Cast returned handle values correctly.
[reactos.git] / reactos / base / services / eventlog / rpc.c
index e176c97..5a0e7b1 100644 (file)
 
 #include "eventlog.h"
 
-#ifdef __GNUC__
-/* HACK as long as idl compiler doesn't support well PUNICODE_STRING args */
-#define PANSI_STRING LPSTR
-#define PUNICODE_STRING LPWSTR
-#define BINDING_HANDLE handle_t BindingHandle,
-#else
-#define BINDING_HANDLE
-#endif
-
 /* FUNCTIONS ****************************************************************/
 
 DWORD STDCALL RpcThreadRoutine(LPVOID lpParameter)
@@ -50,169 +41,169 @@ DWORD STDCALL RpcThreadRoutine(LPVOID lpParameter)
     return 0;
 }
 
-/* Function 0x00 */
+
+/* Function 0 */
 NTSTATUS ElfrClearELFW(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE Handle,
-    /* [in] */  PUNICODE_STRING BackupName)
+    handle_t BindingHandle,
+    IELF_HANDLE LogHandle,
+    PRPC_UNICODE_STRING BackupFileName)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
-/* Function 0x01 */
+
+/* Function 1 */
 NTSTATUS ElfrBackupELFW(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE Handle,
-    /* [in] */  PUNICODE_STRING BackupName)
+    handle_t BindingHandle,
+    IELF_HANDLE LogHandle,
+    PRPC_UNICODE_STRING BackupFileName)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x02 */
+/* Function 2 */
 NTSTATUS ElfrCloseEL(
-    BINDING_HANDLE
-    /* [out][in] */ PLOGHANDLE Handle)
+    handle_t BindingHandle,
+    IELF_HANDLE *LogHandle)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x03 */
+/* Function 3 */
 NTSTATUS ElfrDeregisterEventSource(
-    BINDING_HANDLE
-    /* [out][in] */ PLOGHANDLE Handle)
+    handle_t BindingHandle,
+    IELF_HANDLE *LogHandle)
 {
     UNIMPLEMENTED;
     return STATUS_SUCCESS;
 }
 
 
-/* Function 0x04 */
+/* Function 4 */
 NTSTATUS ElfrNumberOfRecords(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE Handle,
-    /* [out] */ long __RPC_FAR * NumberOfRecords)
+    handle_t BindingHandle,
+    IELF_HANDLE LogHandle,
+    DWORD *NumberOfRecords)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x05 */
+/* Function 5 */
 NTSTATUS ElfrOldestRecord(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE LogHandle,
-    /* [out] */ long __RPC_FAR * OldestRecNumber)
+    handle_t BindingHandle,
+    IELF_HANDLE LogHandle,
+    DWORD *OldestRecordNumber)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x06 */
-NTSTATUS ElfrChangeNotify(void)
+/* Function 6 */
+NTSTATUS ElfrChangeNotify(
+    handle_t BindingHandle,
+    IELF_HANDLE *LogHandle,
+    RPC_CLIENT_ID ClientId,
+    DWORD Event)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x07 */
+/* Function 7 */
 NTSTATUS ElfrOpenELW(
-    BINDING_HANDLE
-    /* [unique][in] */  LPWSTR ServerName,
-    /* [in] */  PUNICODE_STRING FileName,
-    /* [in] */  PUNICODE_STRING NullStr,
-    /* [in] */  long MajorVer,
-    /* [in] */  long MinorVer,
-    /* [out] */ PLOGHANDLE Handle)
+    handle_t BindingHandle,
+    EVENTLOG_HANDLE_W UNCServerName,
+    PRPC_UNICODE_STRING ModuleName,
+    PRPC_UNICODE_STRING RegModuleName,
+    DWORD MajorVersion,
+    DWORD MinorVersion,
+    IELF_HANDLE *LogHandle)
 {
     UNIMPLEMENTED;
-    return STATUS_NOT_IMPLEMENTED;
+    *LogHandle = (IELF_HANDLE)1;
+    return STATUS_SUCCESS;
 }
 
 
-/* Function 0x08 */
+/* Function 8 */
 NTSTATUS ElfrRegisterEventSourceW(
-    BINDING_HANDLE
-    /* [unique][in] */  LPWSTR ServerName,
-    /* [in] */  PUNICODE_STRING LogName,
-    /* [in] */  PUNICODE_STRING NullStr,
-    /* [in] */  long MajorVer,
-    /* [in] */  long MinorVer,
-    /* [out] */ PLOGHANDLE Handle)
+    handle_t BindingHandle,
+    EVENTLOG_HANDLE_W UNCServerName,
+    PRPC_UNICODE_STRING ModuleName,
+    PRPC_UNICODE_STRING RegModuleName,
+    DWORD MajorVersion,
+    DWORD MinorVersion,
+    IELF_HANDLE *LogHandle)
 {
     UNIMPLEMENTED;
-    *Handle = 1;
+    *LogHandle = (IELF_HANDLE)1;
     return STATUS_SUCCESS;
 }
 
 
-/* Function 0x09 */
+/* Function 9 */
 NTSTATUS ElfrOpenBELW(
-    BINDING_HANDLE
-    /* [unique][in] */  LPWSTR ServerName,
-    /* [in] */  PUNICODE_STRING BackupName,
-    /* [in] */  long MajorVer,
-    /* [in] */  long MinorVer,
-    /* [out] */ PLOGHANDLE Handle)
+    handle_t BindingHandle,
+    EVENTLOG_HANDLE_W UNCServerName,
+    PRPC_UNICODE_STRING BackupFileName,
+    DWORD MajorVersion,
+    DWORD MinorVersion,
+    IELF_HANDLE *LogHandle)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x0a */
+/* Function 10 */
 NTSTATUS ElfrReadELW(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE Handle,
-    /* [in] */  long Flags,
-    /* [in] */  long Offset,
-    /* [in] */  long BufSize,
-    /* [size_is][out] */unsigned char __RPC_FAR * Buffer,
-    /* [out] */ long __RPC_FAR * BytesRead,
-    /* [out] */ long __RPC_FAR * BytesNeeded)
+    handle_t BindingHandle,
+    IELF_HANDLE LogHandle,
+    DWORD ReadFlags,
+    DWORD RecordOffset,
+    RULONG NumberOfBytesToRead,
+    BYTE *Buffer,
+    DWORD *NumberOfBytesRead,
+    DWORD *MinNumberOfBytesNeeded)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x0b */
+/* Function 11 */
 NTSTATUS ElfrReportEventW(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE Handle,
-    /* [in] */  long Time,
-    /* [in] */  short Type,
-    /* [in] */  short Category,
-    /* [in] */  long ID,
-    /* [in] */  short NumStrings,
-    /* [in] */  long DataSize,
-    /* [in] */  PUNICODE_STRING ComputerName,
-    /* [unique][in] */          unsigned char __RPC_FAR * SID,
-    /* [unique][size_is][in] */ PUNICODE_STRING __RPC_FAR Strings[],
-    /* [unique][size_is][in] */ unsigned char __RPC_FAR * Data,
-    /* [in] */                  short Flags,
-    /* [unique][out][in] */     long __RPC_FAR * unknown1,
-    /* [unique][out][in] */     long __RPC_FAR * unknown2)
+    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)
 {
-    short i;
+    USHORT i;
 
     /* partial stub */
-
-    if (NumStrings == 0)
-        return STATUS_SUCCESS;
-
-    if (Strings == NULL)
-        return STATUS_SUCCESS;
-
     for (i = 0; i < NumStrings; i++)
     {
-        switch (Type)
+        switch (EventType)
         {
             case EVENTLOG_SUCCESS:
                 DPRINT1("Success: %S\n", Strings[i]);
@@ -231,7 +222,7 @@ NTSTATUS ElfrReportEventW(
                 break;
 
             default:
-                DPRINT1("Type %hu: %S\n", Type, Strings[i]);
+                DPRINT1("Type %hu: %S\n", EventType, Strings[i]);
                 break;
         }
     }
@@ -240,184 +231,236 @@ NTSTATUS ElfrReportEventW(
 }
 
 
-/* Function 0x0c */
+/* Function 12 */
 NTSTATUS ElfrClearELFA(
-    BINDING_HANDLE
-    /* [in] */          LOGHANDLE Handle,
-    /* [unique][in] */  PANSI_STRING BackupName)
+    handle_t BindingHandle,
+    IELF_HANDLE LogHandle,
+    PRPC_STRING BackupFileName)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x0d */
+/* Function 13 */
 NTSTATUS ElfrBackupELFA(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE Handle,
-    /* [in] */  PANSI_STRING BackupName)
+    handle_t BindingHandle,
+    IELF_HANDLE LogHandle,
+    PRPC_STRING BackupFileName)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x0e */
+/* Function 14 */
 NTSTATUS ElfrOpenELA(
-    BINDING_HANDLE
-    /* [unique][in] */  LPSTR ServerName,
-    /* [in] */  PANSI_STRING LogName,
-    /* [in] */  PANSI_STRING NullStr,
-    /* [in] */  long MajorVer,
-    /* [in] */  long MinorVer,
-    /* [out] */ PLOGHANDLE Handle)
+    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, }, StrNull = { 0, };
-    NTSTATUS 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 (LogName && !RtlCreateUnicodeStringFromAsciiz(&logname, LogName))
+    if (ModuleName &&
+        !RtlAnsiStringToUnicodeString(&ModuleNameW, (PANSI_STRING)ModuleName, TRUE))
     {
+        RtlFreeUnicodeString(&UNCServerNameW);
         return STATUS_NO_MEMORY;
     }
 
-    if (ServerName &&
-        !RtlCreateUnicodeStringFromAsciiz(&servername, ServerName))
+    if (RegModuleName &&
+        !RtlAnsiStringToUnicodeString(&RegModuleNameW, (PANSI_STRING)RegModuleName, TRUE))
     {
-        RtlFreeUnicodeString(&logname);
+        RtlFreeUnicodeString(&UNCServerNameW);
+        RtlFreeUnicodeString(&ModuleNameW);
         return STATUS_NO_MEMORY;
     }
 
-    status = ElfrOpenELW(BindingHandle, servername.Buffer, logname.Buffer,
-                         StrNull.Buffer, MajorVer, MinorVer, Handle);
+    Status = ElfrOpenELW(
+        BindingHandle,
+        UNCServerName ? UNCServerNameW.Buffer : NULL,
+        ModuleName ? (PRPC_UNICODE_STRING)&ModuleNameW : NULL,
+        RegModuleName ? (PRPC_UNICODE_STRING)&RegModuleNameW : NULL,
+        MajorVersion,
+        MinorVersion,
+        LogHandle);
 
-    RtlFreeUnicodeString(&servername);
-    RtlFreeUnicodeString(&logname);
+    RtlFreeUnicodeString(&UNCServerNameW);
+    RtlFreeUnicodeString(&ModuleNameW);
+    RtlFreeUnicodeString(&RegModuleNameW);
 
-    return status;
+    return Status;
 }
 
 
-/* Function 0x0f */
+/* Function 15 */
 NTSTATUS ElfrRegisterEventSourceA(
-    BINDING_HANDLE
-    /* [unique][in] */  LPSTR ServerName,
-    /* [in] */  PANSI_STRING LogName,
-    /* [in] */  PANSI_STRING NullStr,
-    /* [in] */  long MajorVer,
-    /* [in] */  long MinorVer,
-    /* [out] */ PLOGHANDLE Handle)
+    handle_t BindingHandle,
+    EVENTLOG_HANDLE_A UNCServerName,
+    PRPC_STRING ModuleName,
+    PRPC_STRING RegModuleName,
+    DWORD MajorVersion,
+    DWORD MinorVersion,
+    IELF_HANDLE *LogHandle)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x10 */
+/* Function 16 */
 NTSTATUS ElfrOpenBELA(
-    BINDING_HANDLE
-    /* [unique][in] */  LPSTR ServerName,
-    /* [in] */  PANSI_STRING BakckupName,
-    /* [in] */  long MajorVer,
-    /* [in] */  long MinorVer,
-    /* [out] */ PLOGHANDLE Handle)
+    handle_t BindingHandle,
+    EVENTLOG_HANDLE_A UNCServerName,
+    PRPC_STRING BackupFileName,
+    DWORD MajorVersion,
+    DWORD MinorVersion,
+    IELF_HANDLE *LogHandle)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x11 */
+/* Function 17 */
 NTSTATUS ElfrReadELA(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE Handle,
-    /* [in] */  long Flags,
-    /* [in] */  long Offset,
-    /* [in] */  long BufSize,
-    /* [size_is][out] */unsigned char __RPC_FAR * Buffer,
-    /* [out] */ long __RPC_FAR * BytesRead,
-    /* [out] */ long __RPC_FAR * BytesNeeded)
+    handle_t BindingHandle,
+    IELF_HANDLE LogHandle,
+    DWORD ReadFlags,
+    DWORD RecordOffset,
+    RULONG NumberOfBytesToRead,
+    BYTE *Buffer,
+    DWORD *NumberOfBytesRead,
+    DWORD *MinNumberOfBytesNeeded)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x12 */
+/* Function 18 */
 NTSTATUS ElfrReportEventA(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE Handle,
-    /* [in] */  long Time,
-    /* [in] */  short Type,
-    /* [in] */  short Category,
-    /* [in] */  long ID,
-    /* [in] */  short NumStrings,
-    /* [in] */  long DataSize,
-    /* [in] */  PANSI_STRING ComputerName,
-    /* [unique][in] */  unsigned char __RPC_FAR * SID,
-    /* [unique][size_is][in] */ PANSI_STRING __RPC_FAR Strings[],
-    /* [unique][size_is][in] */ unsigned char __RPC_FAR * Data,
-    /* [in] */                  short Flags,
-    /* [unique][out][in] */     long __RPC_FAR * unknown1,
-    /* [unique][out][in] */     long __RPC_FAR * unknown2)
+    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)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x13 */
-NTSTATUS ElfrRegisterClusterSvc(void)
+/* Function 19 */
+NTSTATUS ElfrRegisterClusterSvc(
+    handle_t BindingHandle)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x14 */
-NTSTATUS ElfrDeregisterClusterSvc(void)
+/* Function 20 */
+NTSTATUS ElfrDeregisterClusterSvc(
+    handle_t BindingHandle)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x15 */
-NTSTATUS ElfrWriteClusterEvents(void)
+/* Function 21 */
+NTSTATUS ElfrWriteClusterEvents(
+    handle_t BindingHandle)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x16 */
+/* Function 22 */
 NTSTATUS ElfrGetLogInformation(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE Handle,
-    /* [in] */  long InfoLevel,
-    /* [size_is][out] */unsigned char __RPC_FAR * Buffer,
-    /* [in] */  long BufSize,
-    /* [out] */ long __RPC_FAR * BytesNeeded)
+    handle_t BindingHandle,
+    IELF_HANDLE LogHandle,
+    DWORD InfoLevel,
+    BYTE *Buffer,
+    DWORD cbBufSize,
+    DWORD *pcbBytesNeeded)
 {
     UNIMPLEMENTED;
     return STATUS_NOT_IMPLEMENTED;
 }
 
 
-/* Function 0x17 */
+/* Function 23 */
 NTSTATUS ElfrFlushEL(
-    BINDING_HANDLE
-    /* [in] */  LOGHANDLE Handle)
+    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)
 {
     return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
 }
 
+
 void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
 {
     HeapFree(GetProcessHeap(), 0, ptr);
 }
+
+
+void __RPC_USER IELF_HANDLE_rundown(IELF_HANDLE LogHandle)
+{
+}