|
|
/*++
Copyright (C) 1999-2000 Microsoft Corporation
Module Name:
proputil.h
Abstract:
<abstract>
--*/
#ifndef _PROPUTIL_H_
#define _PROPUTIL_H_
#include "stdafx.h"
//===========================================================================
// Constants
//===========================================================================
// Property constants represent indexes into the static PropertyDataMap table.
extern const DWORD IdFirstProp;
// The property constants in this first section have a one-to-one
// correspondence between HTML parameter and registry value
extern const DWORD IdCommentProp; extern const DWORD IdLogTypeProp; extern const DWORD IdCurrentStateProp; extern const DWORD IdLogFileMaxSizeProp; extern const DWORD IdLogFileBaseNameProp; extern const DWORD IdLogFileFolderProp; extern const DWORD IdLogFileSerialNumberProp; extern const DWORD IdLogFileAutoFormatProp; extern const DWORD IdLogFileTypeProp; extern const DWORD IdEofCommandFileProp; extern const DWORD IdCommandFileProp; extern const DWORD IdNetworkNameProp; extern const DWORD IdUserTextProp; extern const DWORD IdPerfLogNameProp; extern const DWORD IdTraceBufferSizeProp; extern const DWORD IdTraceBufferMinCountProp; extern const DWORD IdTraceBufferMaxCountProp; extern const DWORD IdTraceBufferFlushIntProp; extern const DWORD IdActionFlagsProp; extern const DWORD IdTraceFlagsProp; // Property constants below require special handling for BagToRegistry,
// because there is not a one-to-one correspondence between HTML
// parameter and registry value.
extern const DWORD IdRestartProp; extern const DWORD IdStartProp; extern const DWORD IdStopProp; extern const DWORD IdSampleProp; extern const DWORD IdCounterListProp; extern const DWORD IdGuidListProp; /*
// Not handled yet, or covered by special values above.
// Some of these might be needed when writing to HTML file from registry.
//
extern const DWORD IdSysmonVersionProp; extern const DWORD IdSysmonCounterCountProp; extern const DWORD IdSysmonCounterPathProp; extern const DWORD IdAlertThresholdProp; extern const DWORD IdAlertOverUnderProp; extern const DWORD IdTraceProviderCountProp; extern const DWORD IdTraceProviderGuidProp;
extern const DWORD IdLogNameProp; extern const DWORD IdAlertNameProp; extern const DWORD IdStartModeProp; extern const DWORD IdStartAtTimeProp; extern const DWORD IdStopModeProp; extern const DWORD IdStopAtTimeProp; extern const DWORD IdStopAfterUnitTypeProp; extern const DWORD IdStopAfterValueProp; extern const DWORD IdSampleIntUnitTypeProp; extern const DWORD IdSampleIntValueProp; extern const DWORD IdSysmonUpdateIntervalProp; extern const DWORD IdSysmonSampleCountProp; extern const DWORD IdSysmonLogFileNameProp;
extern const DWORD IdExecuteOnlyProp;
*/ extern const DWORD IdExecuteOnlyProp;
class CPropertyBag; class CPropertyUtils;
class CPropertyUtils {
public:
enum eMessageDisplayLevel { eAll = 0, //STATUS_SEVERITY_SUCCESS,
eInfo = 1, //STATUS_SEVERITY_INFORMATIONAL,
eWarnings = 2, //STATUS_SEVERITY_WARNING, // Default level
eError = 3, //STATUS_SEVERITY_ERROR,
eNone = 4, //STATUS_SEVERITY_ERROR + 1
};
CPropertyUtils ( LPCWSTR cszMachineName ); CPropertyUtils ( LPCWSTR cszMachineName, LPCWSTR cszQueryName, CPropertyBag*, HKEY hkeyQuery, HKEY hkeyQueryList );
virtual ~CPropertyUtils ( void ); void SetQueryName ( LPCWSTR ); void SetPropertyBag ( CPropertyBag* ); void SetQueryKey ( HKEY ); void SetQueryListKey ( HKEY );
void SetMessageDisplayLevel ( eMessageDisplayLevel ); eMessageDisplayLevel GetMessageDisplayLevel ( void );
// BagToRegistry requires property bag and parent registry key
HRESULT BagToRegistry ( DWORD dwPropId, DWORD dwLogType = SLQ_COUNTER_LOG );
// ValidateProperty requires property bag
DWORD Validate ( DWORD dwPropId, DWORD dwLogType = SLQ_COUNTER_LOG );
private:
typedef DWORD ( *ValidationMethod )( CPropertyUtils*, DWORD, DWORD );
typedef struct _PROPERTY_DATA_MAP { DWORD dwPropertyId; DWORD dwRegType; LPCWSTR cwszHtmlName; LPCWSTR cwszRegName; ValidationMethod fValidate; BOOL bRequired; DWORD dwMin; DWORD dwMax; } PROPERTY_DATA_MAP, *PPROPERTY_DATA_MAP;
friend DWORD ValidateDwordInterval ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidatePrimaryObjectList ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateSlqTimeInfo ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateMaxFileSize ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateLogFileType ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateString ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateTraceFlags ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateAlertActions ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateDirectoryPath ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateTraceBufferMaxCount ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateFileName ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateFilePath ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType ); friend DWORD ValidateLogExists ( CPropertyUtils* pUtils, DWORD dwPropId, DWORD dwLogType );
HRESULT StringBagToRegistry ( DWORD dwPropId, DWORD dwLogType ); HRESULT DwordBagToRegistry ( DWORD dwPropId, DWORD dwLogType ); HRESULT SlqTimeBagToRegistry ( DWORD dwPropId, DWORD dwLogType ); HRESULT MultiSzBagToRegistry ( DWORD dwPropId, DWORD dwLogType );
HRESULT MultiSzBagToBufferAlloc ( DWORD dwPropId, DWORD dwLogType, LPWSTR* pszMszBuf, DWORD* pdwMszBufLen, DWORD* pdwMszStringLen );
LPCWSTR GetQueryName ( void ); BOOL IsValidDateTime ( LONGLONG& rllDateTime ); BOOL IsDisplayLevelMessage ( DWORD dwStatus ); BOOL IsKernelTraceMode ( DWORD dwTraceFlags );
DWORD GetInvalidStatus ( DWORD dwPropId ); DWORD GetMissingStatus ( DWORD dwPropId );
static const PROPERTY_DATA_MAP m_PropertyDataMap[]; static const DWORD m_dwPropertyDataMapEntries; CPropertyBag* m_pPropBag;
LPWSTR m_szPropBagBuffer; DWORD m_dwPropBagBufLen; eMessageDisplayLevel m_eMessageDisplayLevel; HKEY m_hkeyQuery; HKEY m_hkeyQueryList; WCHAR m_szQueryName[MAX_PATH + 1]; // Todo: Remove size limit
WCHAR m_szMachineName[MAX_COMPUTERNAME_LENGTH + 1];
};
typedef CPropertyUtils *PCPropertyUtils;
#endif //_PROPUTIL_H_
|