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 IELF_HANDLE LogHandle
,
48 PRPC_UNICODE_STRING BackupFileName
)
51 return STATUS_NOT_IMPLEMENTED
;
56 NTSTATUS
ElfrBackupELFW(
57 IELF_HANDLE LogHandle
,
58 PRPC_UNICODE_STRING BackupFileName
)
61 return STATUS_NOT_IMPLEMENTED
;
67 IELF_HANDLE
*LogHandle
)
70 return STATUS_NOT_IMPLEMENTED
;
75 NTSTATUS
ElfrDeregisterEventSource(
76 IELF_HANDLE
*LogHandle
)
79 return STATUS_SUCCESS
;
84 NTSTATUS
ElfrNumberOfRecords(
85 IELF_HANDLE LogHandle
,
86 DWORD
*NumberOfRecords
)
89 return STATUS_NOT_IMPLEMENTED
;
94 NTSTATUS
ElfrOldestRecord(
95 IELF_HANDLE LogHandle
,
96 DWORD
*OldestRecordNumber
)
99 return STATUS_NOT_IMPLEMENTED
;
104 NTSTATUS
ElfrChangeNotify(
105 IELF_HANDLE
*LogHandle
,
106 RPC_CLIENT_ID ClientId
,
110 return STATUS_NOT_IMPLEMENTED
;
115 NTSTATUS
ElfrOpenELW(
116 EVENTLOG_HANDLE_W UNCServerName
,
117 PRPC_UNICODE_STRING ModuleName
,
118 PRPC_UNICODE_STRING RegModuleName
,
121 IELF_HANDLE
*LogHandle
)
124 *LogHandle
= (IELF_HANDLE
)1;
125 return STATUS_SUCCESS
;
130 NTSTATUS
ElfrRegisterEventSourceW(
131 EVENTLOG_HANDLE_W UNCServerName
,
132 PRPC_UNICODE_STRING ModuleName
,
133 PRPC_UNICODE_STRING RegModuleName
,
136 IELF_HANDLE
*LogHandle
)
139 *LogHandle
= (IELF_HANDLE
)1;
140 return STATUS_SUCCESS
;
145 NTSTATUS
ElfrOpenBELW(
146 EVENTLOG_HANDLE_W UNCServerName
,
147 PRPC_UNICODE_STRING BackupFileName
,
150 IELF_HANDLE
*LogHandle
)
153 return STATUS_NOT_IMPLEMENTED
;
158 NTSTATUS
ElfrReadELW(
159 IELF_HANDLE LogHandle
,
162 RULONG NumberOfBytesToRead
,
164 DWORD
*NumberOfBytesRead
,
165 DWORD
*MinNumberOfBytesNeeded
)
168 return STATUS_NOT_IMPLEMENTED
;
173 NTSTATUS
ElfrReportEventW(
174 IELF_HANDLE LogHandle
,
177 USHORT EventCategory
,
181 PRPC_UNICODE_STRING ComputerName
,
183 PRPC_UNICODE_STRING Strings
[],
192 for (i
= 0; i
< NumStrings
; i
++)
196 case EVENTLOG_SUCCESS
:
197 DPRINT1("Success: %S\n", Strings
[i
]);
200 case EVENTLOG_ERROR_TYPE
:
201 DPRINT1("Error: %S\n", Strings
[i
]);
204 case EVENTLOG_WARNING_TYPE
:
205 DPRINT1("Warning: %S\n", Strings
[i
]);
208 case EVENTLOG_INFORMATION_TYPE
:
209 DPRINT1("Info: %S\n", Strings
[i
]);
213 DPRINT1("Type %hu: %S\n", EventType
, Strings
[i
]);
218 return STATUS_SUCCESS
;
223 NTSTATUS
ElfrClearELFA(
224 IELF_HANDLE LogHandle
,
225 PRPC_STRING BackupFileName
)
228 return STATUS_NOT_IMPLEMENTED
;
233 NTSTATUS
ElfrBackupELFA(
234 IELF_HANDLE LogHandle
,
235 PRPC_STRING BackupFileName
)
238 return STATUS_NOT_IMPLEMENTED
;
243 NTSTATUS
ElfrOpenELA(
244 EVENTLOG_HANDLE_A UNCServerName
,
245 PRPC_STRING ModuleName
,
246 PRPC_STRING RegModuleName
,
249 IELF_HANDLE
*LogHandle
)
251 UNICODE_STRING UNCServerNameW
= { 0, };
252 UNICODE_STRING ModuleNameW
= { 0, };
253 UNICODE_STRING RegModuleNameW
= { 0, };
257 !RtlCreateUnicodeStringFromAsciiz(&UNCServerNameW
, UNCServerName
))
259 return STATUS_NO_MEMORY
;
263 !RtlAnsiStringToUnicodeString(&ModuleNameW
, (PANSI_STRING
)ModuleName
, TRUE
))
265 RtlFreeUnicodeString(&UNCServerNameW
);
266 return STATUS_NO_MEMORY
;
270 !RtlAnsiStringToUnicodeString(&RegModuleNameW
, (PANSI_STRING
)RegModuleName
, TRUE
))
272 RtlFreeUnicodeString(&UNCServerNameW
);
273 RtlFreeUnicodeString(&ModuleNameW
);
274 return STATUS_NO_MEMORY
;
277 Status
= ElfrOpenELW(
278 UNCServerName
? UNCServerNameW
.Buffer
: NULL
,
279 ModuleName
? (PRPC_UNICODE_STRING
)&ModuleNameW
: NULL
,
280 RegModuleName
? (PRPC_UNICODE_STRING
)&RegModuleNameW
: NULL
,
285 RtlFreeUnicodeString(&UNCServerNameW
);
286 RtlFreeUnicodeString(&ModuleNameW
);
287 RtlFreeUnicodeString(&RegModuleNameW
);
294 NTSTATUS
ElfrRegisterEventSourceA(
295 EVENTLOG_HANDLE_A UNCServerName
,
296 PRPC_STRING ModuleName
,
297 PRPC_STRING RegModuleName
,
300 IELF_HANDLE
*LogHandle
)
303 return STATUS_NOT_IMPLEMENTED
;
308 NTSTATUS
ElfrOpenBELA(
309 EVENTLOG_HANDLE_A UNCServerName
,
310 PRPC_STRING BackupFileName
,
313 IELF_HANDLE
*LogHandle
)
316 return STATUS_NOT_IMPLEMENTED
;
321 NTSTATUS
ElfrReadELA(
322 IELF_HANDLE LogHandle
,
325 RULONG NumberOfBytesToRead
,
327 DWORD
*NumberOfBytesRead
,
328 DWORD
*MinNumberOfBytesNeeded
)
331 return STATUS_NOT_IMPLEMENTED
;
336 NTSTATUS
ElfrReportEventA(
337 IELF_HANDLE LogHandle
,
340 USHORT EventCategory
,
344 PRPC_STRING ComputerName
,
346 PRPC_STRING Strings
[],
353 return STATUS_NOT_IMPLEMENTED
;
358 NTSTATUS
ElfrRegisterClusterSvc(
359 handle_t BindingHandle
)
362 return STATUS_NOT_IMPLEMENTED
;
367 NTSTATUS
ElfrDeregisterClusterSvc(
368 handle_t BindingHandle
)
371 return STATUS_NOT_IMPLEMENTED
;
376 NTSTATUS
ElfrWriteClusterEvents(
377 handle_t BindingHandle
)
380 return STATUS_NOT_IMPLEMENTED
;
385 NTSTATUS
ElfrGetLogInformation(
386 IELF_HANDLE LogHandle
,
390 DWORD
*pcbBytesNeeded
)
393 return STATUS_NOT_IMPLEMENTED
;
398 NTSTATUS
ElfrFlushEL(
399 IELF_HANDLE LogHandle
)
402 return STATUS_NOT_IMPLEMENTED
;
407 NTSTATUS
ElfrReportEventAndSourceW(
408 IELF_HANDLE LogHandle
,
411 USHORT EventCategory
,
413 PRPC_UNICODE_STRING SourceName
,
416 PRPC_UNICODE_STRING ComputerName
,
418 PRPC_UNICODE_STRING Strings
[],
425 return STATUS_NOT_IMPLEMENTED
;
429 void __RPC_FAR
*__RPC_USER
midl_user_allocate(size_t len
)
431 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, len
);
435 void __RPC_USER
midl_user_free(void __RPC_FAR
* ptr
)
437 HeapFree(GetProcessHeap(), 0, ptr
);
441 void __RPC_USER
IELF_HANDLE_rundown(IELF_HANDLE LogHandle
)