*
* 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>
static RPC_UNICODE_STRING EmptyString = { 0, 0, L"" };
+static inline LPWSTR SERV_dup( LPCSTR str )
+{
+ UINT len;
+ LPWSTR wstr;
+
+ if( !str )
+ return NULL;
+ len = MultiByteToWideChar( CP_ACP, 0, str, -1, NULL, 0 );
+ wstr = HeapAlloc( GetProcessHeap(), 0, len*sizeof (WCHAR) );
+ MultiByteToWideChar( CP_ACP, 0, str, -1, wstr, len );
+ return wstr;
+}
handle_t __RPC_USER
EVENTLOG_HANDLE_A_bind(EVENTLOG_HANDLE_A UNCServerName)
}
+/******************************************************************************
+ * 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);
+ if(!NumberOfRecords)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
RpcTryExcept
{
Status = ElfrNumberOfRecords(hEventLog,
TRACE("%p, %p\n", hEventLog, OldestRecord);
+ if(!OldestRecord)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
RpcTryExcept
{
Status = ElfrOldestRecord(hEventLog,
/******************************************************************************
* OpenEventLogA [ADVAPI32.@]
+ *
+ * Opens a handle to the specified event log.
+ *
+ * PARAMS
+ * lpUNCServerName [I] UNC name of the server on which the event log is
+ * opened.
+ * lpSourceName [I] Name of the log.
+ *
+ * RETURNS
+ * Success: Handle to an event log.
+ * Failure: NULL
*/
HANDLE WINAPI
-OpenEventLogA(IN LPCSTR lpUNCServerName,
- IN LPCSTR lpSourceName)
+OpenEventLogA(IN LPCSTR uncname,
+ IN LPCSTR source)
{
- UNICODE_STRING UNCServerName;
- UNICODE_STRING SourceName;
- HANDLE Handle;
-
- if (!RtlCreateUnicodeStringFromAsciiz(&UNCServerName, lpUNCServerName))
- {
- SetLastError(ERROR_NOT_ENOUGH_MEMORY);
- return NULL;
- }
+ LPWSTR uncnameW, sourceW;
+ HANDLE handle;
- if (!RtlCreateUnicodeStringFromAsciiz(&SourceName, lpSourceName))
- {
- RtlFreeUnicodeString(&UNCServerName);
- SetLastError(ERROR_NOT_ENOUGH_MEMORY);
- return NULL;
- }
+ uncnameW = SERV_dup(uncname);
+ sourceW = SERV_dup(source);
+ handle = OpenEventLogW(uncnameW, sourceW);
+ HeapFree(GetProcessHeap(), 0, uncnameW);
+ HeapFree(GetProcessHeap(), 0, sourceW);
- Handle = OpenEventLogW(UNCServerName.Buffer,
- SourceName.Buffer);
-
- RtlFreeUnicodeString(&UNCServerName);
- RtlFreeUnicodeString(&SourceName);
-
- return Handle;
+ return handle;
}
hEventLog, dwReadFlags, dwRecordOffset, lpBuffer,
nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded);
+ if(!pnBytesRead || !pnMinNumberOfBytesNeeded)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
/* If buffer is NULL set nNumberOfBytesToRead to 0 to prevent rpcrt4 from
trying to access a null pointer */
if (!lpBuffer)
hEventLog, dwReadFlags, dwRecordOffset, lpBuffer,
nNumberOfBytesToRead, pnBytesRead, pnMinNumberOfBytesNeeded);
+ if(!pnBytesRead || !pnMinNumberOfBytesNeeded)
+ {
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+
/* If buffer is NULL set nNumberOfBytesToRead to 0 to prevent rpcrt4 from
trying to access a null pointer */
if (!lpBuffer)