windows-nt/Source/XPSP1/NT/sdktools/appverif/setting.h
2020-09-26 16:20:57 +08:00

239 lines
5.6 KiB
C++

//
// Application Verifier UI
// Copyright (c) Microsoft Corporation, 2001
//
//
//
// module: Setting.h
// author: DMihai
// created: 02/22/2001
//
// Description:
//
//
#ifndef __APP_VERIFIER_SETTINGS_H__
#define __APP_VERIFIER_SETTINGS_H__
////////////////////////////////////////////////////
//
// Standard app verifier flags
//
#define AV_ALL_STANDARD_VERIFIER_FLAGS ( RTL_VRF_FLG_FULL_PAGE_HEAP | \
RTL_VRF_FLG_LOCK_CHECKS | \
RTL_VRF_FLG_HANDLE_CHECKS | \
RTL_VRF_FLG_STACK_CHECKS | \
RTL_VRF_FLG_APPCOMPAT_CHECKS )
////////////////////////////////////////////////////
//
// Type of settings (standard, custom)
//
typedef enum
{
AVSettingsTypeUnknown,
AVSettingsTypeStandard,
AVSettingsTypeCustom
} AVSettingsType;
////////////////////////////////////////////////////
class CApplicationData : public CObject
{
public:
CApplicationData( LPCTSTR szFileName,
LPCTSTR szFullPath,
ULONG uSettingsBits );
CApplicationData( LPCTSTR szFileName,
ULONG uSettingsBits );
public:
//
// Data
//
CString m_strExeFileName;
CString m_strFileVersion;
CString m_strCompanyName;
CString m_strProductName;
DWORD m_uCustomFlags;
BOOL m_bSaved;
protected:
VOID LoadAppVersionData( LPCTSTR szFileName );
};
////////////////////////////////////////////////////
class CApplicationDataArray : public CObArray
{
public:
~CApplicationDataArray();
public:
CApplicationData *GetAt( INT_PTR nIndex );
VOID DeleteAll();
VOID DeleteAt( INT_PTR nIndex );
BOOL IsFileNameInList( LPCTSTR szFileName );
INT_PTR FileNameIndex( LPCTSTR szFileName );
INT_PTR AddNewAppData( LPCTSTR szFileName,
LPCTSTR szFullPath,
ULONG uSettingsBits );
INT_PTR AddNewAppDataConsoleMode( LPCTSTR szFileName,
ULONG uSettingsBits );
VOID SetAllSaved( BOOL bSaved );
};
////////////////////////////////////////////////////
//
// App verifier settings
//
class CAVSettings : public CObject
{
public:
CAVSettings();
public:
//
// Data
//
AVSettingsType m_SettingsType;
CApplicationDataArray m_aApplicationData;
};
/////////////////////////////////////////////////////////////////////////////
//
// Name and bit pair structure
//
typedef struct _BIT_LISTNAME_CMDLINESWITCH
{
ULONG m_uCmdLineStringId;
ULONG m_uNameStringId;
DWORD m_dwBit;
} BIT_LISTNAME_CMDLINESWITCH, *PBIT_LISTNAME_CMDLINESWITCH;
/////////////////////////////////////////////////////////////////////////////
//
// App name and enabled bits pair class
//
class CAppAndBits : public CObject
{
public:
//
// Construction
//
CAppAndBits( LPCTSTR szAppName, DWORD dwEnabledBits );
public:
//
// Data
//
CString m_strAppName;
DWORD m_dwEnabledBits;
};
/////////////////////////////////////////////////////////////////////////////
//
// App name and enabled bits pair array class
//
class CAppAndBitsArray : public CObArray
{
public:
~CAppAndBitsArray();
public:
CAppAndBits *GetAt( INT_PTR nIndex );
VOID DeleteAll();
};
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//
// Global data:
/////////////////////////////////////////////////////////////////////////////
//
// New app verifier settings
//
extern CAVSettings g_NewSettings;
/////////////////////////////////////////////////////////////////////////////
//
// Current settings bits - used as temporary variable
// to store custom settings bits between the settings bits
// page and the app selection page.
//
extern DWORD g_dwNewSettingBits;
/////////////////////////////////////////////////////////////////////////////
//
// Bit names and cmd line switch
//
extern BIT_LISTNAME_CMDLINESWITCH g_AllNamesAndBits[ 5 ];
/////////////////////////////////////////////////////////////////////////////
//
// Changed settings? If yes, the program will exit with AV_EXIT_CODE_RESTART
//
extern BOOL g_bChangedSettings;
/////////////////////////////////////////////////////////////////////////////
extern CAppAndBitsArray g_aAppsAndBitsFromRegistry;
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////
//
// Helper functions
//
/////////////////////////////////////////////////////////////////////////////
//
// Save the new app verifier settings for all images
//
BOOL AVSaveNewSettings( BOOL bDeleteOtherSettings = TRUE );
/////////////////////////////////////////////////////////////////////////////
//
// Save the new app verifier settings for only one image
//
BOOL AVSetVerifierFlagsForExe( LPCTSTR szExeName, DWORD dwNewVerifierFlags );
/////////////////////////////////////////////////////////////////////////////
//
// Dump the current registry settings to the console
//
VOID AVDumpRegistrySettingsToConsole();
/////////////////////////////////////////////////////////////////////////////
//
// Read the current registry settings
//
VOID AVReadCrtRegistrySettings();
#endif //#ifndef __APP_VERIFIER_SETTINGS_H__