BOOL ClearEvents(VOID) { HANDLE hEventLog; WCHAR szFileName[MAX_PATH]; WCHAR szMessage[MAX_LOADSTRING]; ZeroMemory(szFileName, sizeof(szFileName)); ZeroMemory(szMessage, sizeof(szMessage)); LoadStringW(hInst, IDS_CLEAREVENTS_MSG, szMessage, MAX_LOADSTRING); sfn.lpstrFile = szFileName; sfn.nMaxFile = MAX_PATH; switch (MessageBoxW(hwndMainWindow, szMessage, szTitle, MB_YESNOCANCEL | MB_ICONINFORMATION)) { case IDCANCEL: { return FALSE; } case IDNO: { sfn.lpstrFile = NULL; break; } case IDYES: { if (!GetSaveFileNameW(&sfn)) { return FALSE; } break; } } hEventLog = OpenEventLogW(lpComputerName, lpSourceLogName); if (!hEventLog) { ShowLastWin32Error(); return FALSE; } if (!ClearEventLogW(hEventLog, sfn.lpstrFile)) { ShowLastWin32Error(); CloseEventLog(hEventLog); return FALSE; } CloseEventLog(hEventLog); return TRUE; }
/****************************************************************************** * ClearEventLogA [ADVAPI32.@] * * Clears the event log and optionally saves the log to a backup file. * * PARAMS * hEvenLog [I] Handle to event log to clear. * lpBackupFileName [I] Name of the backup file. * * RETURNS * Success: nonzero. if lpBackupFileName != NULL, lpBackupFileName will * contain the contents of hEvenLog and the log will be cleared. * Failure: zero. Fails if the event log is empty or if lpBackupFileName * exists. */ BOOL WINAPI ClearEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName ) { LPWSTR backupW; BOOL ret; backupW = SERV_dup(lpBackupFileName); ret = ClearEventLogW(hEventLog, backupW); heap_free(backupW); return ret; }
/****************************************************************************** * ClearEventLogA [ADVAPI32.@] * * Clears the event log and optionally saves the log to a backup file. * * PARAMS * hEvenLog [I] Handle to event log to clear. * lpBackupFileName [I] Name of the backup file. * * RETURNS * Success: nonzero. if lpBackupFileName != NULL, lpBackupFileName will * contain the contents of hEvenLog and the log will be cleared. * Failure: zero. Fails if the event log is empty or if lpBackupFileName * exists. */ BOOL WINAPI ClearEventLogA( HANDLE hEventLog, LPCSTR lpBackupFileName ) { LPWSTR backupW; BOOL ret; backupW = SERV_dup(lpBackupFileName); ret = ClearEventLogW(hEventLog, backupW); HeapFree(GetProcessHeap(), 0, backupW); return ret; }
/****************************************************************************** * ClearEventLogA [ADVAPI32.@] */ BOOL WINAPI ClearEventLogA(IN HANDLE hEventLog, IN LPCSTR lpBackupFileName) { ANSI_STRING BackupFileNameA; UNICODE_STRING BackupFileNameW; NTSTATUS Status; BOOL Result; TRACE("%p, %s\n", hEventLog, lpBackupFileName); if (lpBackupFileName == NULL) { RtlInitUnicodeString(&BackupFileNameW, NULL); } else { RtlInitAnsiString(&BackupFileNameA, lpBackupFileName); Status = RtlAnsiStringToUnicodeString(&BackupFileNameW, &BackupFileNameA, TRUE); if (!NT_SUCCESS(Status)) { SetLastError(RtlNtStatusToDosError(Status)); return FALSE; } } Result = ClearEventLogW(hEventLog, BackupFileNameW.Buffer); RtlFreeUnicodeString(&BackupFileNameW); return Result; }