[SDK:IDL]: Fix the event log RPC IDL file definitions:

- ElfrChangeNotify takes a IELF_HANDLE handle as its first parameter, not a pointer to it.
- Since we already use NT-like types (especially for USHORT variables), do the same for the other parameters (DWORD -> ULONG), and also use the Pxxx for pointers to xxx.
- Use Windows 2003 maximum size (0x3FFFF) for the event data to be written, instead of the Vista+ limit that is much smaller (0xF000). See also revisions r72207 and r72209.
CORE-11839 #resolve

svn path=/trunk/; revision=72211
This commit is contained in:
Hermès Bélusca-Maïto 2016-08-12 17:22:15 +00:00
parent 8402a33700
commit 6fe74528cb

View file

@ -8,6 +8,8 @@ cpp_quote("#if !defined(__EVENTLOG_H__) && !defined(__ADVAPI32_H)")
typedef long NTSTATUS; typedef long NTSTATUS;
cpp_quote("#endif") cpp_quote("#endif")
#define MAX_STRINGS 0x00000100
#define MAX_SINGLE_EVENT 0x0003FFFF // On Vista+ this is reduced to 0x0000F000
#define MAX_BATCH_BUFF 0x0007FFFF #define MAX_BATCH_BUFF 0x0007FFFF
typedef [range(0, MAX_BATCH_BUFF)] unsigned long RULONG; typedef [range(0, MAX_BATCH_BUFF)] unsigned long RULONG;
@ -23,8 +25,8 @@ typedef [handle, unique] LPWSTR EVENTLOG_HANDLE_W;
typedef [handle, unique] LPSTR EVENTLOG_HANDLE_A; typedef [handle, unique] LPSTR EVENTLOG_HANDLE_A;
typedef struct _RPC_CLIENT_ID { typedef struct _RPC_CLIENT_ID {
DWORD UniqueProcess; ULONG UniqueProcess;
DWORD UniqueThread; ULONG UniqueThread;
} RPC_CLIENT_ID, *PRPC_CLIENT_ID; } RPC_CLIENT_ID, *PRPC_CLIENT_ID;
[ [
@ -51,80 +53,80 @@ interface eventlog
/* Function 2 */ /* Function 2 */
NTSTATUS ElfrCloseEL( NTSTATUS ElfrCloseEL(
[in, out] IELF_HANDLE *LogHandle); [in, out] PIELF_HANDLE LogHandle);
/* Function 3 */ /* Function 3 */
NTSTATUS ElfrDeregisterEventSource( NTSTATUS ElfrDeregisterEventSource(
[in, out] IELF_HANDLE *LogHandle); [in, out] PIELF_HANDLE LogHandle);
/* Function 4 */ /* Function 4 */
NTSTATUS ElfrNumberOfRecords( NTSTATUS ElfrNumberOfRecords(
[in] IELF_HANDLE LogHandle, [in] IELF_HANDLE LogHandle,
[out] DWORD *NumberOfRecords); [out] PULONG NumberOfRecords);
/* Function 5 */ /* Function 5 */
NTSTATUS ElfrOldestRecord( NTSTATUS ElfrOldestRecord(
[in] IELF_HANDLE LogHandle, [in] IELF_HANDLE LogHandle,
[out] DWORD *OldestRecordNumber); [out] PULONG OldestRecordNumber);
/* Function 6 */ /* Function 6 */
NTSTATUS ElfrChangeNotify( NTSTATUS ElfrChangeNotify(
[in] IELF_HANDLE *LogHandle, [in] IELF_HANDLE LogHandle,
[in] RPC_CLIENT_ID ClientId, [in] RPC_CLIENT_ID ClientId,
[in] DWORD Event); [in] ULONG Event);
/* Function 7 */ /* Function 7 */
NTSTATUS ElfrOpenELW( NTSTATUS ElfrOpenELW(
[in, unique] EVENTLOG_HANDLE_W UNCServerName, /* FIXME */ [in, unique] EVENTLOG_HANDLE_W UNCServerName, /* FIXME */
[in] PRPC_UNICODE_STRING ModuleName, [in] PRPC_UNICODE_STRING ModuleName,
[in] PRPC_UNICODE_STRING RegModuleName, [in] PRPC_UNICODE_STRING RegModuleName,
[in] DWORD MajorVersion, [in] ULONG MajorVersion,
[in] DWORD MinorVersion, [in] ULONG MinorVersion,
[out] IELF_HANDLE* LogHandle); [out] PIELF_HANDLE LogHandle);
/* Function 8 */ /* Function 8 */
NTSTATUS ElfrRegisterEventSourceW( NTSTATUS ElfrRegisterEventSourceW(
[in, unique] EVENTLOG_HANDLE_W UNCServerName, /* FIXME */ [in, unique] EVENTLOG_HANDLE_W UNCServerName, /* FIXME */
[in] PRPC_UNICODE_STRING ModuleName, [in] PRPC_UNICODE_STRING ModuleName,
[in] PRPC_UNICODE_STRING RegModuleName, [in] PRPC_UNICODE_STRING RegModuleName,
[in] DWORD MajorVersion, [in] ULONG MajorVersion,
[in] DWORD MinorVersion, [in] ULONG MinorVersion,
[out] IELF_HANDLE* LogHandle); [out] PIELF_HANDLE LogHandle);
/* Function 9 */ /* Function 9 */
NTSTATUS ElfrOpenBELW( NTSTATUS ElfrOpenBELW(
[in, unique] EVENTLOG_HANDLE_W UNCServerName, /* FIXME */ [in, unique] EVENTLOG_HANDLE_W UNCServerName, /* FIXME */
[in] PRPC_UNICODE_STRING BackupFileName, [in] PRPC_UNICODE_STRING BackupFileName,
[in] DWORD MajorVersion, [in] ULONG MajorVersion,
[in] DWORD MinorVersion, [in] ULONG MinorVersion,
[out] IELF_HANDLE* LogHandle); [out] PIELF_HANDLE LogHandle);
/* Function 10 */ /* Function 10 */
NTSTATUS ElfrReadELW( NTSTATUS ElfrReadELW(
[in] IELF_HANDLE LogHandle, [in] IELF_HANDLE LogHandle,
[in] DWORD ReadFlags, [in] ULONG ReadFlags,
[in] DWORD RecordOffset, [in] ULONG RecordOffset,
[in] RULONG NumberOfBytesToRead, [in] RULONG NumberOfBytesToRead,
[out, size_is(NumberOfBytesToRead)] BYTE *Buffer, [out, size_is(NumberOfBytesToRead)] PBYTE Buffer,
[out] DWORD *NumberOfBytesRead, [out] PULONG NumberOfBytesRead,
[out] DWORD *MinNumberOfBytesNeeded); [out] PULONG MinNumberOfBytesNeeded);
/* Function 11 */ /* Function 11 */
NTSTATUS ElfrReportEventW( NTSTATUS ElfrReportEventW(
[in] IELF_HANDLE LogHandle, [in] IELF_HANDLE LogHandle,
[in] DWORD Time, [in] ULONG Time,
[in] USHORT EventType, [in] USHORT EventType,
[in] USHORT EventCategory, [in] USHORT EventCategory,
[in] DWORD EventID, [in] ULONG EventID,
[in/*, max_is(256)*/] USHORT NumStrings, [in, range(0, MAX_STRINGS)] USHORT NumStrings,
[in, range(0, 61440)] DWORD DataSize, [in, range(0, MAX_SINGLE_EVENT)] ULONG DataSize,
[in] PRPC_UNICODE_STRING ComputerName, [in] PRPC_UNICODE_STRING ComputerName,
[in, unique] PRPC_SID UserSID, [in, unique] PRPC_SID UserSID,
[in, size_is(NumStrings), unique] PRPC_UNICODE_STRING Strings[*], [in, size_is(NumStrings), unique] PRPC_UNICODE_STRING Strings[*],
[in, size_is(DataSize), unique] BYTE *Data, [in, size_is(DataSize), unique] PBYTE Data,
[in] USHORT Flags, [in] USHORT Flags,
[in, out, unique] DWORD *RecordNumber, [in, out, unique] PULONG RecordNumber,
[in, out, unique] DWORD *TimeWritten); [in, out, unique] PULONG TimeWritten);
/* Function 12 */ /* Function 12 */
NTSTATUS ElfrClearELFA( NTSTATUS ElfrClearELFA(
@ -141,53 +143,53 @@ interface eventlog
[in, unique] EVENTLOG_HANDLE_A UNCServerName, /* FIXME */ [in, unique] EVENTLOG_HANDLE_A UNCServerName, /* FIXME */
[in] PRPC_STRING ModuleName, [in] PRPC_STRING ModuleName,
[in] PRPC_STRING RegModuleName, [in] PRPC_STRING RegModuleName,
[in] DWORD MajorVersion, [in] ULONG MajorVersion,
[in] DWORD MinorVersion, [in] ULONG MinorVersion,
[out] IELF_HANDLE* LogHandle); [out] PIELF_HANDLE LogHandle);
/* Function 15 */ /* Function 15 */
NTSTATUS ElfrRegisterEventSourceA( NTSTATUS ElfrRegisterEventSourceA(
[in, unique] EVENTLOG_HANDLE_A UNCServerName, /* FIXME */ [in, unique] EVENTLOG_HANDLE_A UNCServerName, /* FIXME */
[in] PRPC_STRING ModuleName, [in] PRPC_STRING ModuleName,
[in] PRPC_STRING RegModuleName, [in] PRPC_STRING RegModuleName,
[in] DWORD MajorVersion, [in] ULONG MajorVersion,
[in] DWORD MinorVersion, [in] ULONG MinorVersion,
[out] IELF_HANDLE* LogHandle); [out] PIELF_HANDLE LogHandle);
/* Function 16 */ /* Function 16 */
NTSTATUS ElfrOpenBELA( NTSTATUS ElfrOpenBELA(
[in, unique] EVENTLOG_HANDLE_A UNCServerName, /* FIXME */ [in, unique] EVENTLOG_HANDLE_A UNCServerName, /* FIXME */
[in] PRPC_STRING BackupFileName, [in] PRPC_STRING BackupFileName,
[in] DWORD MajorVersion, [in] ULONG MajorVersion,
[in] DWORD MinorVersion, [in] ULONG MinorVersion,
[out] IELF_HANDLE* LogHandle); [out] PIELF_HANDLE LogHandle);
/* Function 17 */ /* Function 17 */
NTSTATUS ElfrReadELA( NTSTATUS ElfrReadELA(
[in] IELF_HANDLE LogHandle, [in] IELF_HANDLE LogHandle,
[in] DWORD ReadFlags, [in] ULONG ReadFlags,
[in] DWORD RecordOffset, [in] ULONG RecordOffset,
[in] RULONG NumberOfBytesToRead, [in] RULONG NumberOfBytesToRead,
[out, size_is(NumberOfBytesToRead)] BYTE *Buffer, [out, size_is(NumberOfBytesToRead)] PBYTE Buffer,
[out] DWORD *NumberOfBytesRead, [out] PULONG NumberOfBytesRead,
[out] DWORD *MinNumberOfBytesNeeded); [out] PULONG MinNumberOfBytesNeeded);
/* Function 18 */ /* Function 18 */
NTSTATUS ElfrReportEventA( NTSTATUS ElfrReportEventA(
[in] IELF_HANDLE LogHandle, [in] IELF_HANDLE LogHandle,
[in] DWORD Time, [in] ULONG Time,
[in] USHORT EventType, [in] USHORT EventType,
[in] USHORT EventCategory, [in] USHORT EventCategory,
[in] DWORD EventID, [in] ULONG EventID,
[in/*, max_is(256)*/] USHORT NumStrings, [in, range(0, MAX_STRINGS)] USHORT NumStrings,
[in, range(0, 61440)] DWORD DataSize, [in, range(0, MAX_SINGLE_EVENT)] ULONG DataSize,
[in] PRPC_STRING ComputerName, [in] PRPC_STRING ComputerName,
[in, unique] PRPC_SID UserSID, [in, unique] PRPC_SID UserSID,
[in, size_is(NumStrings), unique] PRPC_STRING Strings[*], [in, size_is(NumStrings), unique] PRPC_STRING Strings[*],
[in, size_is(DataSize), unique] BYTE *Data, [in, size_is(DataSize), unique] PBYTE Data,
[in] USHORT Flags, [in] USHORT Flags,
[in, out, unique] DWORD *RecordNumber, [in, out, unique] PULONG RecordNumber,
[in, out, unique] DWORD *TimeWritten); [in, out, unique] PULONG TimeWritten);
/* Function 19 */ /* Function 19 */
NTSTATUS ElfrRegisterClusterSvc( NTSTATUS ElfrRegisterClusterSvc(
@ -204,10 +206,10 @@ interface eventlog
/* Function 22 */ /* Function 22 */
NTSTATUS ElfrGetLogInformation( NTSTATUS ElfrGetLogInformation(
[in] IELF_HANDLE LogHandle, [in] IELF_HANDLE LogHandle,
[in] DWORD InfoLevel, [in] ULONG InfoLevel,
[out, size_is(cbBufSize)] BYTE *Buffer, [out, size_is(cbBufSize)] PBYTE Buffer,
[in, range(0, 1024)] DWORD cbBufSize, [in, range(0, 1024)] ULONG cbBufSize,
[out] DWORD *pcbBytesNeeded); [out] PULONG pcbBytesNeeded);
/* Function 23 */ /* Function 23 */
NTSTATUS ElfrFlushEL( NTSTATUS ElfrFlushEL(
@ -216,18 +218,18 @@ interface eventlog
/* Function 24 */ /* Function 24 */
NTSTATUS ElfrReportEventAndSourceW( NTSTATUS ElfrReportEventAndSourceW(
[in] IELF_HANDLE LogHandle, [in] IELF_HANDLE LogHandle,
[in] DWORD Time, [in] ULONG Time,
[in] USHORT EventType, [in] USHORT EventType,
[in] USHORT EventCategory, [in] USHORT EventCategory,
[in] ULONG EventID, [in] ULONG EventID,
[in] PRPC_UNICODE_STRING SourceName, [in] PRPC_UNICODE_STRING SourceName,
[in/*, max_is(256)*/] USHORT NumStrings, [in, range(0, MAX_STRINGS)] USHORT NumStrings,
[in, range(0, 61440)] DWORD DataSize, [in, range(0, MAX_SINGLE_EVENT)] ULONG DataSize,
[in] PRPC_UNICODE_STRING ComputerName, [in] PRPC_UNICODE_STRING ComputerName,
[in, unique] PRPC_SID UserSID, [in, unique] PRPC_SID UserSID,
[in, size_is(NumStrings), unique] PRPC_UNICODE_STRING Strings[*], [in, size_is(NumStrings), unique] PRPC_UNICODE_STRING Strings[*],
[in, size_is(DataSize), unique] BYTE *Data, [in, size_is(DataSize), unique] PBYTE Data,
[in] USHORT Flags, [in] USHORT Flags,
[in, out, unique] DWORD *RecordNumber, [in, out, unique] PULONG RecordNumber,
[in, out, unique] DWORD *TimeWritten); [in, out, unique] PULONG TimeWritten);
} }