summaryrefslogtreecommitdiffstats
path: root/private/eventlog/elf.idl
diff options
context:
space:
mode:
Diffstat (limited to 'private/eventlog/elf.idl')
-rw-r--r--private/eventlog/elf.idl317
1 files changed, 317 insertions, 0 deletions
diff --git a/private/eventlog/elf.idl b/private/eventlog/elf.idl
new file mode 100644
index 000000000..8685828d3
--- /dev/null
+++ b/private/eventlog/elf.idl
@@ -0,0 +1,317 @@
+/*++
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ ELF.IDL
+
+Abstract:
+
+ Contains the Elfr APIs which are used to remote the Elf APIs to
+ the local or remote server via RPC.
+ Also contains the RPC specific data structures for these API.
+
+Author:
+
+ Rajen Shah (rajens) 02-Apr-1991
+
+Revision History:
+
+ 02-Apr-1991 RajenS
+ created
+
+--*/
+
+//
+// Interface Attributes
+//
+
+[
+ uuid(82273FDC-E32A-18C3-3F78-827929DC23EA),
+ version(0.0),
+#ifdef __midl
+ ms_union,
+#endif // __midl
+ pointer_default(unique)
+]
+
+//
+// Interface Keyword
+//
+
+interface eventlog
+
+//
+// Interface Body
+//
+
+{
+
+import "imports.idl"; // import all the include files
+#include "event.h"
+
+//
+// ELF Generic Handle used to bind from client to server.
+//
+
+typedef [handle,unique] LPWSTR EVENTLOG_HANDLE_W;
+typedef [handle,unique] LPSTR EVENTLOG_HANDLE_A;
+
+//
+// ELF RPC Context Handle (Internal definition of ELF_HANDLE)
+//
+
+typedef [context_handle] struct _IELF_HANDLE {
+ LIST_ENTRY Next;
+ ULONG Signature; // BUGBUG - For debug only
+ ULONG Flags; // e.g. "invalid"
+ ULONG GrantedAccess;
+ ATOM Atom;
+ ULONG SeekRecordPos;
+ ULONG SeekBytePos;
+ ULONG MajorVersion; // To identify caller
+ ULONG MinorVersion;
+ ULONG NameLength;
+ [size_is(NameLength)] WCHAR Name[]; // Keep this as last field
+} *IELF_HANDLE;
+typedef IELF_HANDLE *PIELF_HANDLE;
+
+//
+// UNICODE Function Prototypes
+//
+//
+// Only OpenEL and CloseEL need to take PIELF_HANDLE
+// parameters since they are the only ones to modify the handle.
+// The others will take IELF_HANDLE parameters instead.
+//
+
+// NOTE:
+// The names of the functions are short so that when RPC
+// prepends the interface name to the names, they are still
+// unique.
+//
+
+NTSTATUS
+ElfrClearELFW (
+ [in] IELF_HANDLE LogHandle,
+ [in,unique] PRPC_UNICODE_STRING BackupFileName
+ );
+
+NTSTATUS
+ElfrBackupELFW (
+ [in] IELF_HANDLE LogHandle,
+ [in] PRPC_UNICODE_STRING BackupFileName
+ );
+
+NTSTATUS
+ElfrCloseEL (
+ [in,out] PIELF_HANDLE LogHandle
+ );
+
+NTSTATUS
+ElfrDeregisterEventSource (
+ [in,out] PIELF_HANDLE LogHandle
+ );
+
+NTSTATUS
+ElfrNumberOfRecords(
+ [in] IELF_HANDLE LogHandle,
+ [out] PULONG NumberOfRecords
+ );
+
+NTSTATUS
+ElfrOldestRecord(
+ [in] IELF_HANDLE LogHandle,
+ [out] PULONG OldestRecordNumber
+ );
+
+NTSTATUS
+ElfrChangeNotify(
+ [in] IELF_HANDLE LogHandle,
+ [in] RPC_CLIENT_ID ClientId,
+ [in] ULONG Event
+ );
+
+//
+// The ModuleName is the one passed in by the caller of the API. This is
+// the one that is written to the log file.
+//
+// RegModuleName is generated by the client stub, and is the name that is
+// used to determine the default log file name from the registry. For
+// NT Product1, this will be "Application". NOTE: It is necessary to do this
+// now so that we can support viewing logs from a Product 2 system in the
+// future if we change our logging mechanism.
+//
+
+NTSTATUS
+ElfrOpenELW (
+ [in] EVENTLOG_HANDLE_W UNCServerName,
+ [in] PRPC_UNICODE_STRING ModuleName, // Passed in API call
+ [in] PRPC_UNICODE_STRING RegModuleName, // Used for registry
+ [in] ULONG MajorVersion,
+ [in] ULONG MinorVersion,
+ [out] PIELF_HANDLE LogHandle
+ );
+
+NTSTATUS
+ElfrRegisterEventSourceW (
+ [in] EVENTLOG_HANDLE_W UNCServerName,
+ [in] PRPC_UNICODE_STRING ModuleName, // Passed in API call
+ [in] PRPC_UNICODE_STRING RegModuleName, // Used for registry info
+ [in] ULONG MajorVersion,
+ [in] ULONG MinorVersion,
+ [out] PIELF_HANDLE LogHandle
+ );
+
+NTSTATUS
+ElfrOpenBELW (
+ [in] EVENTLOG_HANDLE_W UNCServerName,
+ [in] PRPC_UNICODE_STRING BackupFileName, // Passed in API call
+ [in] ULONG MajorVersion,
+ [in] ULONG MinorVersion,
+ [out] PIELF_HANDLE LogHandle
+ );
+
+//
+// BUGBUG - Fix this interface once RPC supports the ability to return
+// zero bytes. Then, Buffer will have a length_is(*NumberOfBytesRead)
+// added to it. For now, always transfer NumberOfBytesToRead bytes!
+//
+// The LogHandle is an [in,out] since the server side stores information
+// in it that pertains to the current seek position.
+//
+
+NTSTATUS
+ElfrReadELW (
+ [in] IELF_HANDLE LogHandle,
+ [in] ULONG ReadFlags,
+ [in] ULONG RecordOffset,
+ [in] ULONG NumberOfBytesToRead,
+ [out,size_is(NumberOfBytesToRead)] PBYTE Buffer,
+ [out] PULONG NumberOfBytesRead,
+ [out] PULONG MinNumberOfBytesNeeded
+ );
+
+NTSTATUS
+ElfrReportEventW (
+ [in] IELF_HANDLE LogHandle,
+ [in] ULONG Time,
+ [in] USHORT EventType,
+ [in] USHORT EventCategory,
+ [in] ULONG EventID,
+ [in] USHORT NumStrings,
+ [in] ULONG DataSize,
+ [in] PRPC_UNICODE_STRING ComputerName,
+ [in, unique] PRPC_SID UserSID,
+ [in, size_is(NumStrings), unique] PRPC_UNICODE_STRING Strings[*],
+ [in, size_is(DataSize), unique] PBYTE Data,
+ [in] USHORT Flags,
+ [in,out,unique] PULONG RecordNumber,
+ [in,out,unique] PULONG TimeWritten
+ );
+
+//
+// ANSI Function Prototypes
+//
+//
+// Only OpenEL needs to take PIELF_HANDLE
+// parameters since they are the only ones to modify the handle.
+// The others will take IELF_HANDLE parameters instead.
+//
+// NOTE that there is only one api for CloseEL since there are no
+// strings involved.
+//
+
+NTSTATUS
+ElfrClearELFA (
+ [in] IELF_HANDLE LogHandle,
+ [in,unique] PRPC_STRING BackupFileName
+ );
+
+NTSTATUS
+ElfrBackupELFA (
+ [in] IELF_HANDLE LogHandle,
+ [in] PRPC_STRING BackupFileName
+ );
+
+//
+// The ModuleName is the one passed in by the caller of the API. This is
+// the one that is written to the log file.
+//
+// RegModuleName is generated by the client stub, and is the name that is
+// used to determine the default log file name from the registry. For
+// NT Product1, this will be "Application". NOTE: It is necessary to do this
+// now so that we can support viewing logs from a Product 2 system in the
+// future if we change our logging mechanism.
+//
+
+NTSTATUS
+ElfrOpenELA (
+ [in] EVENTLOG_HANDLE_A UNCServerName,
+ [in] PRPC_STRING ModuleName, // Passed in API call
+ [in] PRPC_STRING RegModuleName, // Used for registry info
+ [in] ULONG MajorVersion,
+ [in] ULONG MinorVersion,
+ [out] PIELF_HANDLE LogHandle
+ );
+
+NTSTATUS
+ElfrRegisterEventSourceA (
+ [in] EVENTLOG_HANDLE_A UNCServerName,
+ [in] PRPC_STRING ModuleName, // Passed in API call
+ [in] PRPC_STRING RegModuleName, // Used for registry info
+ [in] ULONG MajorVersion,
+ [in] ULONG MinorVersion,
+ [out] PIELF_HANDLE LogHandle
+ );
+
+NTSTATUS
+ElfrOpenBELA (
+ [in] EVENTLOG_HANDLE_A UNCServerName,
+ [in] PRPC_STRING FileName, // Passed in API call
+ [in] ULONG MajorVersion,
+ [in] ULONG MinorVersion,
+ [out] PIELF_HANDLE LogHandle
+ );
+
+//
+// BUGBUG - Fix this interface once RPC supports the ability to return
+// zero bytes. Then, Buffer will have a length_is(*NumberOfBytesRead)
+// added to it. For now, always transfer NumberOfBytesToRead bytes!
+//
+// The LogHandle is an [in,out] since the server side stores information
+// in it that pertains to the current seek position.
+//
+
+NTSTATUS
+ElfrReadELA (
+ [in] IELF_HANDLE LogHandle,
+ [in] ULONG ReadFlags,
+ [in] ULONG RecordOffset,
+ [in] ULONG NumberOfBytesToRead,
+ [out,size_is(NumberOfBytesToRead)] PBYTE Buffer,
+ [out] PULONG NumberOfBytesRead,
+ [out] PULONG MinNumberOfBytesNeeded
+ );
+
+NTSTATUS
+ElfrReportEventA (
+ [in] IELF_HANDLE LogHandle,
+ [in] ULONG Time,
+ [in] USHORT EventType,
+ [in] USHORT EventCategory,
+ [in] ULONG EventID,
+ [in] USHORT NumStrings,
+ [in] ULONG DataSize,
+ [in] PRPC_STRING ComputerName,
+ [in, unique] PRPC_SID UserSID,
+ [in, size_is(NumStrings), unique] PRPC_STRING Strings[*],
+ [in, size_is(DataSize), unique] PBYTE Data,
+ [in] USHORT Flags,
+ [in,out,unique] PULONG RecordNumber,
+ [in,out,unique] PULONG TimeWritten
+ );
+
+
+}