/*++ Copyright (c) 1991 Microsoft Corporation Module Name: elfproto.h Abstract: This file contains the prototypes for the Eventlog service. Author: Rajen Shah (rajens) 12-Aug-1991 Revision History: */ #ifndef _ELFPROTO_ #define _ELFPROTO // Other prototypes PVOID ElfpAllocateBuffer( ULONG size ); VOID ElfpFreeBuffer( PVOID BufPtr ); VOID ElfPerformRequest( PELF_REQUEST_RECORD Request ); PLOGMODULE GetModuleStruc( PUNICODE_STRING ModuleName ); PLOGMODULE FindModuleStrucFromAtom( ATOM Atom ); VOID ElfControlResponse( DWORD ); VOID IELF_HANDLE_rundown( IELF_HANDLE ElfHandle ); VOID LinkContextHandle( IELF_HANDLE LogHandle ); VOID UnlinkContextHandle( IELF_HANDLE LogHandle ); VOID LinkLogModule( PLOGMODULE pLogModule, ANSI_STRING* pModuleNameA ); VOID UnlinkLogModule( PLOGMODULE pLogModule ); VOID LinkLogFile( PLOGFILE pLogFile ); VOID UnlinkLogFile( PLOGFILE pLogFile ); VOID GetGlobalResource( DWORD Type ); VOID ReleaseGlobalResource( VOID ); NTSTATUS SetUpDataStruct( PUNICODE_STRING LogFileName, ULONG MaxFileSize, ULONG Retention, ULONG GuestAccessRestriction, PUNICODE_STRING ModuleName, HANDLE hLogFile, ELF_LOG_TYPE LogType, LOGPOPUP logpLogPopup ); NTSTATUS SetUpModules( HANDLE hLogFile, PLOGFILE pLogFile, BOOLEAN bAllowDupes ); BOOL StartLPCThread( VOID ); VOID StopLPCThread( VOID ); BOOL ElfStartRegistryMonitor( VOID ); VOID StopRegistryMonitor( VOID ); NTSTATUS ReadRegistryInfo( HANDLE hLogFiles, PUNICODE_STRING SubKeyName, PLOG_FILE_INFO LogFileInfo ); NTSTATUS ElfOpenLogFile( PLOGFILE pLogFile, ELF_LOG_TYPE LogType ); NTSTATUS ElfpCloseLogFile( PLOGFILE pLogFile, DWORD Flags ); BOOL ValidFilePos( PVOID Position, PVOID BeginningRecord, PVOID EndingRecord, PVOID PhysicalEOF, PVOID BaseAddress, BOOL fCheckBeginEndRange ); VOID ElfpCleanUp( ULONG EventFlags ); NTSTATUS ElfpCopyFile( IN HANDLE SourceHandle, IN PUNICODE_STRING TargetFileName ); VOID FreeModuleAndLogFileStructs(VOID); NTSTATUS ElfpFlushFiles(VOID); VOID InvalidateContextHandlesForLogFile( PLOGFILE pLogFile ); VOID FixContextHandlesForRecord( DWORD RecordOffset, DWORD NewRecordOffset ); PLOGFILE FindLogFileFromName( PUNICODE_STRING LogFileName ); BOOL SendAdminAlert( ULONG MessageID, ULONG NumStrings, UNICODE_STRING* pStrings ); PVOID NextRecordPosition( ULONG ReadFlags, PVOID CurrPosition, ULONG CurrRecordLength, PVOID BeginRecord, PVOID EndRecord, PVOID PhysicalEOF, PVOID PhysStart ); VOID NotifyChange( PLOGFILE pLogFile ); VOID WriteQueuedEvents( VOID ); VOID FlushQueuedEvents( VOID ); VOID PerformWriteRequest( PELF_REQUEST_RECORD Request ); NTSTATUS ElfpCreateLogFileObject( PLOGFILE LogFile, DWORD Type, ULONG GuestAccessRestriction ); VOID ElfpDeleteLogFileObject( PLOGFILE LogFile ); VOID ElfpCloseAudit( IN LPWSTR SubsystemName, IN IELF_HANDLE ContextHandle ); NTSTATUS ElfpAccessCheckAndAudit( IN LPWSTR SubsystemName, IN LPWSTR ObjectTypeName, IN LPWSTR ObjectName, IN OUT IELF_HANDLE ContextHandle, IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN ACCESS_MASK DesiredAccess, IN PGENERIC_MAPPING GenericMapping, IN BOOL ForSecurityLog ); NTSTATUS ElfCreateWellKnownSids( VOID ); VOID ElfFreeWellKnownSids( VOID ); NTSTATUS ElfCreateAndSetSD( IN PRTL_ACE_DATA AceData, IN ULONG AceCount, IN PSID OwnerSid OPTIONAL, IN PSID GroupSid OPTIONAL, OUT PSECURITY_DESCRIPTOR* NewDescriptor ); NTSTATUS ElfCreateUserSecurityObject( IN PRTL_ACE_DATA AceData, IN ULONG AceCount, IN PSID OwnerSid, IN PSID GroupSid, IN BOOLEAN IsDirectoryObject, IN PGENERIC_MAPPING GenericMapping, OUT PSECURITY_DESCRIPTOR* NewDescriptor ); VOID ElfpCreateElfEvent( IN ULONG EventId, IN USHORT EventType, IN USHORT EventCategory, IN USHORT NumStrings, IN LPWSTR* Strings, IN LPVOID Data, IN ULONG DataSize, IN USHORT Flags ); VOID ElfpCreateQueuedAlert( DWORD MessageId, DWORD NumberOfStrings, LPWSTR Strings[] ); VOID ElfpCreateQueuedMessage( DWORD MessageId, DWORD NumberOfStrings, LPWSTR Strings[] ); DWORD ElfStatusUpdate( IN DWORD NewState ); DWORD GetElState( VOID ); VOID ElfpGenerateLogClearedEvent( IELF_HANDLE LogHandle ); VOID ElInitStatus( VOID ); VOID ElCleanupStatus( VOID ); DWORD ElfBeginForcedShutdown( IN BOOL PendingCode, IN DWORD ExitCode, IN DWORD ServiceSpecificCode ); NTSTATUS ElfpTestClientPrivilege( IN ULONG ulPrivilege, IN HANDLE hThreadToken OPTIONAL ); //SS: added to extend clustering support NTSTATUS FindSizeofEventsSinceStart( OUT PULONG pulTotalEventSize, IN PULONG pulNumLogFiles, OUT PPROPLOGFILEINFO* ppPropLogFileInfo ); NTSTATUS GetEventsToProp( IN PEVENTLOGRECORD pEventLogRecords, IN PPROPLOGFILEINFO pPropLogFileInfo ); //SS: end of changes for clustering VOID ElfWriteTimeStamp( TIMESTAMPEVENT EventType, BOOLEAN Append ); VOID CALLBACK ElfWriteLastAliveTimeStamp( UINT uID, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2 ); #endif // ifndef _ELFPROTO_