Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

238 lines
5.6 KiB

  1. //
  2. // Application Verifier UI
  3. // Copyright (c) Microsoft Corporation, 2001
  4. //
  5. //
  6. //
  7. // module: Setting.h
  8. // author: DMihai
  9. // created: 02/22/2001
  10. //
  11. // Description:
  12. //
  13. //
  14. #ifndef __APP_VERIFIER_SETTINGS_H__
  15. #define __APP_VERIFIER_SETTINGS_H__
  16. ////////////////////////////////////////////////////
  17. //
  18. // Standard app verifier flags
  19. //
  20. #define AV_ALL_STANDARD_VERIFIER_FLAGS ( RTL_VRF_FLG_FULL_PAGE_HEAP | \
  21. RTL_VRF_FLG_LOCK_CHECKS | \
  22. RTL_VRF_FLG_HANDLE_CHECKS | \
  23. RTL_VRF_FLG_STACK_CHECKS | \
  24. RTL_VRF_FLG_APPCOMPAT_CHECKS )
  25. ////////////////////////////////////////////////////
  26. //
  27. // Type of settings (standard, custom)
  28. //
  29. typedef enum
  30. {
  31. AVSettingsTypeUnknown,
  32. AVSettingsTypeStandard,
  33. AVSettingsTypeCustom
  34. } AVSettingsType;
  35. ////////////////////////////////////////////////////
  36. class CApplicationData : public CObject
  37. {
  38. public:
  39. CApplicationData( LPCTSTR szFileName,
  40. LPCTSTR szFullPath,
  41. ULONG uSettingsBits );
  42. CApplicationData( LPCTSTR szFileName,
  43. ULONG uSettingsBits );
  44. public:
  45. //
  46. // Data
  47. //
  48. CString m_strExeFileName;
  49. CString m_strFileVersion;
  50. CString m_strCompanyName;
  51. CString m_strProductName;
  52. DWORD m_uCustomFlags;
  53. BOOL m_bSaved;
  54. protected:
  55. VOID LoadAppVersionData( LPCTSTR szFileName );
  56. };
  57. ////////////////////////////////////////////////////
  58. class CApplicationDataArray : public CObArray
  59. {
  60. public:
  61. ~CApplicationDataArray();
  62. public:
  63. CApplicationData *GetAt( INT_PTR nIndex );
  64. VOID DeleteAll();
  65. VOID DeleteAt( INT_PTR nIndex );
  66. BOOL IsFileNameInList( LPCTSTR szFileName );
  67. INT_PTR FileNameIndex( LPCTSTR szFileName );
  68. INT_PTR AddNewAppData( LPCTSTR szFileName,
  69. LPCTSTR szFullPath,
  70. ULONG uSettingsBits );
  71. INT_PTR AddNewAppDataConsoleMode( LPCTSTR szFileName,
  72. ULONG uSettingsBits );
  73. VOID SetAllSaved( BOOL bSaved );
  74. };
  75. ////////////////////////////////////////////////////
  76. //
  77. // App verifier settings
  78. //
  79. class CAVSettings : public CObject
  80. {
  81. public:
  82. CAVSettings();
  83. public:
  84. //
  85. // Data
  86. //
  87. AVSettingsType m_SettingsType;
  88. CApplicationDataArray m_aApplicationData;
  89. };
  90. /////////////////////////////////////////////////////////////////////////////
  91. //
  92. // Name and bit pair structure
  93. //
  94. typedef struct _BIT_LISTNAME_CMDLINESWITCH
  95. {
  96. ULONG m_uCmdLineStringId;
  97. ULONG m_uNameStringId;
  98. DWORD m_dwBit;
  99. } BIT_LISTNAME_CMDLINESWITCH, *PBIT_LISTNAME_CMDLINESWITCH;
  100. /////////////////////////////////////////////////////////////////////////////
  101. //
  102. // App name and enabled bits pair class
  103. //
  104. class CAppAndBits : public CObject
  105. {
  106. public:
  107. //
  108. // Construction
  109. //
  110. CAppAndBits( LPCTSTR szAppName, DWORD dwEnabledBits );
  111. public:
  112. //
  113. // Data
  114. //
  115. CString m_strAppName;
  116. DWORD m_dwEnabledBits;
  117. };
  118. /////////////////////////////////////////////////////////////////////////////
  119. //
  120. // App name and enabled bits pair array class
  121. //
  122. class CAppAndBitsArray : public CObArray
  123. {
  124. public:
  125. ~CAppAndBitsArray();
  126. public:
  127. CAppAndBits *GetAt( INT_PTR nIndex );
  128. VOID DeleteAll();
  129. };
  130. /////////////////////////////////////////////////////////////////////////////
  131. /////////////////////////////////////////////////////////////////////////////
  132. /////////////////////////////////////////////////////////////////////////////
  133. //
  134. // Global data:
  135. /////////////////////////////////////////////////////////////////////////////
  136. //
  137. // New app verifier settings
  138. //
  139. extern CAVSettings g_NewSettings;
  140. /////////////////////////////////////////////////////////////////////////////
  141. //
  142. // Current settings bits - used as temporary variable
  143. // to store custom settings bits between the settings bits
  144. // page and the app selection page.
  145. //
  146. extern DWORD g_dwNewSettingBits;
  147. /////////////////////////////////////////////////////////////////////////////
  148. //
  149. // Bit names and cmd line switch
  150. //
  151. extern BIT_LISTNAME_CMDLINESWITCH g_AllNamesAndBits[ 5 ];
  152. /////////////////////////////////////////////////////////////////////////////
  153. //
  154. // Changed settings? If yes, the program will exit with AV_EXIT_CODE_RESTART
  155. //
  156. extern BOOL g_bChangedSettings;
  157. /////////////////////////////////////////////////////////////////////////////
  158. extern CAppAndBitsArray g_aAppsAndBitsFromRegistry;
  159. /////////////////////////////////////////////////////////////////////////////
  160. /////////////////////////////////////////////////////////////////////////////
  161. /////////////////////////////////////////////////////////////////////////////
  162. //
  163. // Helper functions
  164. //
  165. /////////////////////////////////////////////////////////////////////////////
  166. //
  167. // Save the new app verifier settings for all images
  168. //
  169. BOOL AVSaveNewSettings( BOOL bDeleteOtherSettings = TRUE );
  170. /////////////////////////////////////////////////////////////////////////////
  171. //
  172. // Save the new app verifier settings for only one image
  173. //
  174. BOOL AVSetVerifierFlagsForExe( LPCTSTR szExeName, DWORD dwNewVerifierFlags );
  175. /////////////////////////////////////////////////////////////////////////////
  176. //
  177. // Dump the current registry settings to the console
  178. //
  179. VOID AVDumpRegistrySettingsToConsole();
  180. /////////////////////////////////////////////////////////////////////////////
  181. //
  182. // Read the current registry settings
  183. //
  184. VOID AVReadCrtRegistrySettings();
  185. #endif //#ifndef __APP_VERIFIER_SETTINGS_H__