*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <advapi32.h>
BackupFileName.Buffer = (LPSTR)lpBackupFileName;
BackupFileName.Length = BackupFileName.MaximumLength =
lpBackupFileName ? strlen(lpBackupFileName) : 0;
+ BackupFileName.MaximumLength += sizeof(CHAR);
- _SEH2_TRY
+ RpcTryExcept
{
Status = ElfrBackupELFA(hEventLog,
&BackupFileName);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
BackupFileName.Buffer = (LPWSTR)lpBackupFileName;
BackupFileName.Length = BackupFileName.MaximumLength =
lpBackupFileName ? wcslen(lpBackupFileName) * sizeof(WCHAR) : 0;
+ BackupFileName.MaximumLength += sizeof(WCHAR);
- _SEH2_TRY
+ RpcTryExcept
{
Status = ElfrBackupELFW(hEventLog,
&BackupFileName);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
BackupFileName.Buffer = (LPSTR)lpBackupFileName;
BackupFileName.Length = BackupFileName.MaximumLength =
lpBackupFileName ? strlen(lpBackupFileName) : 0;
+ BackupFileName.MaximumLength += sizeof(CHAR);
- _SEH2_TRY
+ RpcTryExcept
{
Status = ElfrClearELFA(hEventLog,
&BackupFileName);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
BackupFileName.Buffer = (LPWSTR)lpBackupFileName;
BackupFileName.Length = BackupFileName.MaximumLength =
lpBackupFileName ? wcslen(lpBackupFileName) * sizeof(WCHAR) : 0;
+ BackupFileName.MaximumLength += sizeof(WCHAR);
- _SEH2_TRY
+ RpcTryExcept
{
Status = ElfrClearELFW(hEventLog,
&BackupFileName);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
TRACE("%p\n", hEventLog);
- _SEH2_TRY
+ RpcTryExcept
{
Status = ElfrCloseEL(&hEventLog);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
TRACE("%p\n", hEventLog);
- _SEH2_TRY
+ RpcTryExcept
{
Status = ElfrDeregisterEventSource(&hEventLog);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
}
+/******************************************************************************
+ * GetEventLogInformation [ADVAPI32.@]
+ *
+ * PARAMS
+ * hEventLog [I] Handle to event log
+ * dwInfoLevel [I] Level of event log information to return
+ * lpBuffer [O] Buffer that receives the event log information
+ * cbBufSize [I] Size of the lpBuffer buffer
+ * pcbBytesNeeded [O] Required buffer size
+ */
+BOOL WINAPI
+GetEventLogInformation(IN HANDLE hEventLog,
+ IN DWORD dwInfoLevel,
+ OUT LPVOID lpBuffer,
+ IN DWORD cbBufSize,
+ OUT LPDWORD pcbBytesNeeded)
+{
+ UNIMPLEMENTED;
+ SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+ return FALSE;
+}
+
+
/******************************************************************************
* GetNumberOfEventLogRecords [ADVAPI32.@]
*
TRACE("%p, %p\n", hEventLog, NumberOfRecords);
- _SEH2_TRY
+ if(!NumberOfRecords)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
+ RpcTryExcept
{
Status = ElfrNumberOfRecords(hEventLog,
&Records);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
TRACE("%p, %p\n", hEventLog, OldestRecord);
- _SEH2_TRY
+ if(!OldestRecord)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
+ RpcTryExcept
{
Status = ElfrOldestRecord(hEventLog,
&Oldest);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
FileName.Buffer = (LPWSTR)lpFileName;
FileName.Length = FileName.MaximumLength =
lpFileName ? wcslen(lpFileName) * sizeof(WCHAR) : 0;
+ FileName.MaximumLength += sizeof(WCHAR);
- _SEH2_TRY
+ RpcTryExcept
{
Status = ElfrOpenBELW((LPWSTR)lpUNCServerName,
&FileName,
- 0,
- 0,
+ 1,
+ 1,
&LogHandle);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
SourceName.Buffer = (LPWSTR)lpSourceName;
SourceName.Length = SourceName.MaximumLength =
lpSourceName ? wcslen(lpSourceName) * sizeof(WCHAR) : 0;
+ SourceName.MaximumLength += sizeof(WCHAR);
- _SEH2_TRY
+ RpcTryExcept
{
Status = ElfrOpenELW((LPWSTR)lpUNCServerName,
&SourceName,
&EmptyString,
- 0,
- 0,
+ 1,
+ 1,
&LogHandle);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
hEventLog, dwReadFlags, dwRecordOffset, lpBuffer,
nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded);
- _SEH2_TRY
+ /* If buffer is NULL set nNumberOfBytesToRead to 0 to prevent rpcrt4 from
+ trying to access a null pointer */
+ if (!lpBuffer)
+ {
+ nNumberOfBytesToRead = 0;
+ }
+
+ RpcTryExcept
{
Status = ElfrReadELA(hEventLog,
dwReadFlags,
&bytesRead,
&minNumberOfBytesNeeded);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
+
+ *pnBytesRead = (DWORD)bytesRead;
+ *pnMinNumberOfBytesNeeded = (DWORD)minNumberOfBytesNeeded;
if (!NT_SUCCESS(Status))
{
return FALSE;
}
- *pnBytesRead = (DWORD)bytesRead;
- *pnMinNumberOfBytesNeeded = (DWORD)minNumberOfBytesNeeded;
-
return TRUE;
}
hEventLog, dwReadFlags, dwRecordOffset, lpBuffer,
nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded);
- _SEH2_TRY
+ /* If buffer is NULL set nNumberOfBytesToRead to 0 to prevent rpcrt4 from
+ trying to access a null pointer */
+ if (!lpBuffer)
+ {
+ nNumberOfBytesToRead = 0;
+ }
+
+ RpcTryExcept
{
Status = ElfrReadELW(hEventLog,
dwReadFlags,
&bytesRead,
&minNumberOfBytesNeeded);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
+
+ *pnBytesRead = (DWORD)bytesRead;
+ *pnMinNumberOfBytesNeeded = (DWORD)minNumberOfBytesNeeded;
if (!NT_SUCCESS(Status))
{
return FALSE;
}
- *pnBytesRead = (DWORD)bytesRead;
- *pnMinNumberOfBytesNeeded = (DWORD)minNumberOfBytesNeeded;
-
return TRUE;
}
SourceName.Buffer = (LPWSTR)lpSourceName;
SourceName.Length = SourceName.MaximumLength =
lpSourceName ? wcslen(lpSourceName) * sizeof(WCHAR) : 0;
+ SourceName.MaximumLength += sizeof(WCHAR);
- _SEH2_TRY
+ RpcTryExcept
{
Status = ElfrRegisterEventSourceW((LPWSTR)lpUNCServerName,
&SourceName,
&EmptyString,
- 0,
- 0,
+ 1,
+ 1,
&LogHandle);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
if (!NT_SUCCESS(Status))
{
RtlInitUnicodeString(&Strings[i], lpStrings[i]);
/*FIXME: ComputerName */
- RtlInitEmptyUnicodeString(&ComputerName, NULL, 0);
+ RtlInitUnicodeString(&ComputerName, L"");
- _SEH2_TRY
+ RpcTryExcept
{
Status = ElfrReportEventW(hEventLog,
0, /* FIXME: Time */
NULL,
NULL);
}
- _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
Status = I_RpcMapWin32Status(RpcExceptionCode());
}
- _SEH2_END;
+ RpcEndExcept;
HeapFree(GetProcessHeap(), 0, Strings);