[EVENTLOG]

- Implement ElfrClearELFA and ElfrClearELFW.
- Fix the module name conversion in ElfrOpenELA and ElfrRegisterEventSourceA.

svn path=/trunk/; revision=54656
This commit is contained in:
Eric Kohl 2011-12-15 21:33:46 +00:00
parent ca6eeb6640
commit ab618427e0

View file

@ -160,8 +160,25 @@ NTSTATUS ElfrClearELFW(
IELF_HANDLE LogHandle, IELF_HANDLE LogHandle,
PRPC_UNICODE_STRING BackupFileName) PRPC_UNICODE_STRING BackupFileName)
{ {
UNIMPLEMENTED; PLOGHANDLE lpLogHandle;
return STATUS_NOT_IMPLEMENTED; PLOGFILE lpLogFile;
lpLogHandle = ElfGetLogHandleEntryByHandle(LogHandle);
if (!lpLogHandle)
{
return STATUS_INVALID_HANDLE;
}
lpLogFile = lpLogHandle->LogFile;
if (BackupFileName->Length > 0)
{
/* FIXME: Write a backup file */
}
LogfInitializeNew(lpLogFile);
return STATUS_SUCCESS;
} }
@ -301,7 +318,7 @@ NTSTATUS ElfrRegisterEventSourceW(
DWORD MinorVersion, DWORD MinorVersion,
IELF_HANDLE *LogHandle) IELF_HANDLE *LogHandle)
{ {
DPRINT1("ElfrRegisterEventSourceW()\n"); DPRINT("ElfrRegisterEventSourceW()\n");
if ((MajorVersion != 1) || (MinorVersion != 1)) if ((MajorVersion != 1) || (MinorVersion != 1))
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
@ -310,7 +327,7 @@ NTSTATUS ElfrRegisterEventSourceW(
if (RegModuleName->Length > 0) if (RegModuleName->Length > 0)
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
DPRINT1("ModuleName: %S\n", ModuleName->Buffer); DPRINT("ModuleName: %S\n", ModuleName->Buffer);
/*FIXME: UNCServerName must specify the server or empty for local */ /*FIXME: UNCServerName must specify the server or empty for local */
@ -500,8 +517,21 @@ NTSTATUS ElfrClearELFA(
IELF_HANDLE LogHandle, IELF_HANDLE LogHandle,
PRPC_STRING BackupFileName) PRPC_STRING BackupFileName)
{ {
UNIMPLEMENTED; UNICODE_STRING BackupFileNameW;
return STATUS_NOT_IMPLEMENTED; NTSTATUS Status;
Status = RtlAnsiStringToUnicodeString(&BackupFileNameW,
(PANSI_STRING)BackupFileName,
TRUE);
if (!NT_SUCCESS(Status))
return Status;
Status = ElfrClearELFW(LogHandle,
(PRPC_UNICODE_STRING)&BackupFileNameW);
RtlFreeUnicodeString(&BackupFileNameW);
return Status;
} }
@ -525,6 +555,7 @@ NTSTATUS ElfrOpenELA(
IELF_HANDLE *LogHandle) IELF_HANDLE *LogHandle)
{ {
UNICODE_STRING ModuleNameW; UNICODE_STRING ModuleNameW;
NTSTATUS Status;
if ((MajorVersion != 1) || (MinorVersion != 1)) if ((MajorVersion != 1) || (MinorVersion != 1))
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
@ -533,7 +564,9 @@ NTSTATUS ElfrOpenELA(
if (RegModuleName->Length > 0) if (RegModuleName->Length > 0)
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
RtlAnsiStringToUnicodeString(&ModuleNameW, (PANSI_STRING)ModuleName, TRUE); Status = RtlAnsiStringToUnicodeString(&ModuleNameW, (PANSI_STRING)ModuleName, TRUE);
if (!NT_SUCCESS(Status))
return Status;
/* FIXME: Must verify that caller has read access */ /* FIXME: Must verify that caller has read access */
@ -559,12 +592,16 @@ NTSTATUS ElfrRegisterEventSourceA(
DWORD MinorVersion, DWORD MinorVersion,
IELF_HANDLE *LogHandle) IELF_HANDLE *LogHandle)
{ {
UNICODE_STRING ModuleNameW = { 0, 0, NULL }; UNICODE_STRING ModuleNameW;
NTSTATUS Status;
if (ModuleName && Status = RtlAnsiStringToUnicodeString(&ModuleNameW,
!RtlAnsiStringToUnicodeString(&ModuleNameW, (PANSI_STRING)ModuleName, TRUE)) (PANSI_STRING)ModuleName,
TRUE);
if (!NT_SUCCESS(Status))
{ {
return STATUS_NO_MEMORY; DPRINT1("RtlAnsiStringToUnicodeString failed (Status 0x%08lx)\n", Status);
return Status;
} }
/* RegModuleName must be an empty string */ /* RegModuleName must be an empty string */