|
|
#ifndef _SETUPLOG_
#define _SETUPLOG_
#include <windows.h>
#include <setupapi.h>
//
// File names for the 2 log files.
//
#define SETUPLOG_ACTION_FILENAME TEXT("setupact.log")
#define SETUPLOG_ERROR_FILENAME TEXT("setuperr.log")
//
// String used to separate items in the log.
//
#define SETUPLOG_ITEM_TERMINATOR TEXT("\r\n***\r\n\r\n")
//
// Value to be used as a MessageString to indicate that the MessageId should
// be used instead.
//
#define SETUPLOG_USE_MESSAGEID (PTSTR)(1)
//
// The LogSeverity type and its associated values are defined in setupapi.h.
// The high order word of the LogSeverity is reserved for the following flags.
//
#define SETUPLOG_SINGLE_MESSAGE 0x00010000
typedef PVOID (*PSPLOG_OPENFILE_ROUTINE) ( IN LPCTSTR Filename, IN BOOL WipeLogFile );
typedef UINT (*PSPLOG_CLOSEFILE_ROUTINE) ( IN PVOID LogFile );
typedef PVOID (*PSPLOG_ALLOC_ROUTINE) ( IN DWORD Size );
typedef VOID (*PSPLOG_FREE_ROUTINE) ( IN CONST VOID *p );
typedef PTSTR (*PSPLOG_FORMAT_ROUTINE) ( IN LPCTSTR MessageString, IN UINT MessageId, IN va_list *ArgumentList );
typedef BOOL (*PSPLOG_WRITE_ROUTINE) ( IN PVOID LogFile, IN LPCTSTR Buffer );
typedef BOOL (*PSPLOG_ACQUIRELOCK_ROUTINE) ( IN PVOID Mutex );
typedef BOOL (*PSPLOG_RELEASELOCK_ROUTINE) ( IN PVOID Mutex );
typedef struct _SETUPLOG_CONTEXT { PSPLOG_OPENFILE_ROUTINE OpenFile; PSPLOG_CLOSEFILE_ROUTINE CloseFile; PSPLOG_ALLOC_ROUTINE AllocMem; PSPLOG_FREE_ROUTINE FreeMem; PSPLOG_FORMAT_ROUTINE Format; PSPLOG_WRITE_ROUTINE Write; PSPLOG_ACQUIRELOCK_ROUTINE Lock; PSPLOG_RELEASELOCK_ROUTINE Unlock; PVOID hActionLog; PVOID hErrorLog; PVOID Mutex; LogSeverity WorstError; LPCTSTR SeverityDescriptions[LogSevMaximum]; } SETUPLOG_CONTEXT, *PSETUPLOG_CONTEXT;
//
// API's for setuplog.lib
//
BOOL SetuplogInitializeEx( IN PSETUPLOG_CONTEXT SetuplogContext, IN BOOL WipeLogFile, IN LPCTSTR ActionFilename, IN LPCTSTR ErrorFilename, IN PVOID Reserved1, IN DWORD Reserved2 );
BOOL SetuplogInitialize( IN PSETUPLOG_CONTEXT SetuplogContext, IN BOOL WipeLogFile );
PTSTR SetuplogFormatMessageWithContextV( IN PSETUPLOG_CONTEXT MyContext, IN DWORD Flags, IN LPCTSTR MessageString, IN UINT MessageId, IN va_list *ArgumentList );
PTSTR SetuplogFormatMessageV( IN DWORD Flags, IN LPCTSTR MessageString, IN UINT MessageId, IN va_list *ArgumentList );
PTSTR SetuplogFormatMessage( IN DWORD Flags, IN LPCTSTR MessageString, IN UINT MessageId, ... );
BOOL SetuplogErrorV( IN LogSeverity Severity, IN LPCTSTR MessageString, IN UINT MessageId, OPTIONAL IN va_list *ArgumentList );
BOOL SetuplogError( IN LogSeverity Severity, IN LPCTSTR MessageString, IN UINT MessageId, OPTIONAL ... );
BOOL SetuplogTerminate( VOID );
#endif // _SETUPLOG_
|