2 * PROJECT: ReactOS kernel
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: services/eventlog/rpc.c
5 * PURPOSE: Event logging service
6 * COPYRIGHT: Copyright 2005 Saveliy Tretiakov
9 /* INCLUDES *****************************************************************/
13 /* FUNCTIONS ****************************************************************/
15 DWORD STDCALL
RpcThreadRoutine(LPVOID lpParameter
)
19 Status
= RpcServerUseProtseqEpW(L
"ncacn_np", 20, L
"\\pipe\\EventLog", NULL
);
20 if (Status
!= RPC_S_OK
)
22 DPRINT("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status
);
26 Status
= RpcServerRegisterIf(eventlog_v0_0_s_ifspec
, NULL
, NULL
);
28 if (Status
!= RPC_S_OK
)
30 DPRINT("RpcServerRegisterIf() failed (Status %lx)\n", Status
);
34 Status
= RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT
, FALSE
);
36 if (Status
!= RPC_S_OK
)
38 DPRINT("RpcServerListen() failed (Status %lx)\n", Status
);
46 NTSTATUS
ElfrClearELFW(
47 handle_t BindingHandle
,
48 IELF_HANDLE LogHandle
,
49 PRPC_UNICODE_STRING BackupFileName
)
52 return STATUS_NOT_IMPLEMENTED
;
57 NTSTATUS
ElfrBackupELFW(
58 handle_t BindingHandle
,
59 IELF_HANDLE LogHandle
,
60 PRPC_UNICODE_STRING BackupFileName
)
63 return STATUS_NOT_IMPLEMENTED
;
69 handle_t BindingHandle
,
70 IELF_HANDLE
*LogHandle
)
73 return STATUS_NOT_IMPLEMENTED
;
78 NTSTATUS
ElfrDeregisterEventSource(
79 handle_t BindingHandle
,
80 IELF_HANDLE
*LogHandle
)
83 return STATUS_SUCCESS
;
88 NTSTATUS
ElfrNumberOfRecords(
89 handle_t BindingHandle
,
90 IELF_HANDLE LogHandle
,
91 DWORD
*NumberOfRecords
)
94 return STATUS_NOT_IMPLEMENTED
;
99 NTSTATUS
ElfrOldestRecord(
100 handle_t BindingHandle
,
101 IELF_HANDLE LogHandle
,
102 DWORD
*OldestRecordNumber
)
105 return STATUS_NOT_IMPLEMENTED
;
110 NTSTATUS
ElfrChangeNotify(
111 handle_t BindingHandle
,
112 IELF_HANDLE
*LogHandle
,
113 RPC_CLIENT_ID ClientId
,
117 return STATUS_NOT_IMPLEMENTED
;
122 NTSTATUS
ElfrOpenELW(
123 handle_t BindingHandle
,
124 EVENTLOG_HANDLE_W UNCServerName
,
125 PRPC_UNICODE_STRING ModuleName
,
126 PRPC_UNICODE_STRING RegModuleName
,
129 IELF_HANDLE
*LogHandle
)
132 *LogHandle
= (IELF_HANDLE
)1;
133 return STATUS_SUCCESS
;
138 NTSTATUS
ElfrRegisterEventSourceW(
139 handle_t BindingHandle
,
140 EVENTLOG_HANDLE_W UNCServerName
,
141 PRPC_UNICODE_STRING ModuleName
,
142 PRPC_UNICODE_STRING RegModuleName
,
145 IELF_HANDLE
*LogHandle
)
148 *LogHandle
= (IELF_HANDLE
)1;
149 return STATUS_SUCCESS
;
154 NTSTATUS
ElfrOpenBELW(
155 handle_t BindingHandle
,
156 EVENTLOG_HANDLE_W UNCServerName
,
157 PRPC_UNICODE_STRING BackupFileName
,
160 IELF_HANDLE
*LogHandle
)
163 return STATUS_NOT_IMPLEMENTED
;
168 NTSTATUS
ElfrReadELW(
169 handle_t BindingHandle
,
170 IELF_HANDLE LogHandle
,
173 RULONG NumberOfBytesToRead
,
175 DWORD
*NumberOfBytesRead
,
176 DWORD
*MinNumberOfBytesNeeded
)
179 return STATUS_NOT_IMPLEMENTED
;
184 NTSTATUS
ElfrReportEventW(
185 handle_t BindingHandle
,
186 IELF_HANDLE LogHandle
,
189 USHORT EventCategory
,
193 PRPC_UNICODE_STRING ComputerName
,
195 PRPC_UNICODE_STRING Strings
[],
204 for (i
= 0; i
< NumStrings
; i
++)
208 case EVENTLOG_SUCCESS
:
209 DPRINT1("Success: %S\n", Strings
[i
]);
212 case EVENTLOG_ERROR_TYPE
:
213 DPRINT1("Error: %S\n", Strings
[i
]);
216 case EVENTLOG_WARNING_TYPE
:
217 DPRINT1("Warning: %S\n", Strings
[i
]);
220 case EVENTLOG_INFORMATION_TYPE
:
221 DPRINT1("Info: %S\n", Strings
[i
]);
225 DPRINT1("Type %hu: %S\n", EventType
, Strings
[i
]);
230 return STATUS_SUCCESS
;
235 NTSTATUS
ElfrClearELFA(
236 handle_t BindingHandle
,
237 IELF_HANDLE LogHandle
,
238 PRPC_STRING BackupFileName
)
241 return STATUS_NOT_IMPLEMENTED
;
246 NTSTATUS
ElfrBackupELFA(
247 handle_t BindingHandle
,
248 IELF_HANDLE LogHandle
,
249 PRPC_STRING BackupFileName
)
252 return STATUS_NOT_IMPLEMENTED
;
257 NTSTATUS
ElfrOpenELA(
258 handle_t BindingHandle
,
259 EVENTLOG_HANDLE_A UNCServerName
,
260 PRPC_STRING ModuleName
,
261 PRPC_STRING RegModuleName
,
264 IELF_HANDLE
*LogHandle
)
266 UNICODE_STRING UNCServerNameW
= { 0, };
267 UNICODE_STRING ModuleNameW
= { 0, };
268 UNICODE_STRING RegModuleNameW
= { 0, };
272 !RtlCreateUnicodeStringFromAsciiz(&UNCServerNameW
, UNCServerName
))
274 return STATUS_NO_MEMORY
;
278 !RtlAnsiStringToUnicodeString(&ModuleNameW
, (PANSI_STRING
)ModuleName
, TRUE
))
280 RtlFreeUnicodeString(&UNCServerNameW
);
281 return STATUS_NO_MEMORY
;
285 !RtlAnsiStringToUnicodeString(&RegModuleNameW
, (PANSI_STRING
)RegModuleName
, TRUE
))
287 RtlFreeUnicodeString(&UNCServerNameW
);
288 RtlFreeUnicodeString(&ModuleNameW
);
289 return STATUS_NO_MEMORY
;
292 Status
= ElfrOpenELW(
294 UNCServerName
? UNCServerNameW
.Buffer
: NULL
,
295 ModuleName
? (PRPC_UNICODE_STRING
)&ModuleNameW
: NULL
,
296 RegModuleName
? (PRPC_UNICODE_STRING
)&RegModuleNameW
: NULL
,
301 RtlFreeUnicodeString(&UNCServerNameW
);
302 RtlFreeUnicodeString(&ModuleNameW
);
303 RtlFreeUnicodeString(&RegModuleNameW
);
310 NTSTATUS
ElfrRegisterEventSourceA(
311 handle_t BindingHandle
,
312 EVENTLOG_HANDLE_A UNCServerName
,
313 PRPC_STRING ModuleName
,
314 PRPC_STRING RegModuleName
,
317 IELF_HANDLE
*LogHandle
)
320 return STATUS_NOT_IMPLEMENTED
;
325 NTSTATUS
ElfrOpenBELA(
326 handle_t BindingHandle
,
327 EVENTLOG_HANDLE_A UNCServerName
,
328 PRPC_STRING BackupFileName
,
331 IELF_HANDLE
*LogHandle
)
334 return STATUS_NOT_IMPLEMENTED
;
339 NTSTATUS
ElfrReadELA(
340 handle_t BindingHandle
,
341 IELF_HANDLE LogHandle
,
344 RULONG NumberOfBytesToRead
,
346 DWORD
*NumberOfBytesRead
,
347 DWORD
*MinNumberOfBytesNeeded
)
350 return STATUS_NOT_IMPLEMENTED
;
355 NTSTATUS
ElfrReportEventA(
356 handle_t BindingHandle
,
357 IELF_HANDLE LogHandle
,
360 USHORT EventCategory
,
364 PRPC_STRING ComputerName
,
366 PRPC_STRING Strings
[],
373 return STATUS_NOT_IMPLEMENTED
;
378 NTSTATUS
ElfrRegisterClusterSvc(
379 handle_t BindingHandle
)
382 return STATUS_NOT_IMPLEMENTED
;
387 NTSTATUS
ElfrDeregisterClusterSvc(
388 handle_t BindingHandle
)
391 return STATUS_NOT_IMPLEMENTED
;
396 NTSTATUS
ElfrWriteClusterEvents(
397 handle_t BindingHandle
)
400 return STATUS_NOT_IMPLEMENTED
;
405 NTSTATUS
ElfrGetLogInformation(
406 handle_t BindingHandle
,
407 IELF_HANDLE LogHandle
,
411 DWORD
*pcbBytesNeeded
)
414 return STATUS_NOT_IMPLEMENTED
;
419 NTSTATUS
ElfrFlushEL(
420 handle_t BindingHandle
,
421 IELF_HANDLE LogHandle
)
424 return STATUS_NOT_IMPLEMENTED
;
429 NTSTATUS
ElfrReportEventAndSourceW(
430 handle_t BindingHandle
,
431 IELF_HANDLE LogHandle
,
434 USHORT EventCategory
,
436 PRPC_UNICODE_STRING SourceName
,
439 PRPC_UNICODE_STRING ComputerName
,
441 PRPC_UNICODE_STRING Strings
[],
448 return STATUS_NOT_IMPLEMENTED
;
452 void __RPC_FAR
*__RPC_USER
midl_user_allocate(size_t len
)
454 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, len
);
458 void __RPC_USER
midl_user_free(void __RPC_FAR
* ptr
)
460 HeapFree(GetProcessHeap(), 0, ptr
);
464 void __RPC_USER
IELF_HANDLE_rundown(IELF_HANDLE LogHandle
)