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.

223 lines
8.2 KiB

  1. //
  2. // Driver Verifier UI
  3. // Copyright (c) Microsoft Corporation, 1999
  4. //
  5. //
  6. //
  7. // module: VrfUtil.h
  8. // author: DMihai
  9. // created: 11/1/00
  10. //
  11. // Description:
  12. //
  13. #ifndef __VRF_UTIL_H_INCLUDED__
  14. #define __VRF_UTIL_H_INCLUDED__
  15. //
  16. // ARRAY_LENGTH macro
  17. //
  18. #ifndef ARRAY_LENGTH
  19. #define ARRAY_LENGTH( array ) ( sizeof( array ) / sizeof( array[ 0 ] ) )
  20. #endif //#ifndef ARRAY_LENGTH
  21. //
  22. // Forward declarations
  23. //
  24. class CRuntimeVerifierData;
  25. ///////////////////////////////////////////////////////////////////////////
  26. //
  27. // Report an error using a dialog box or a console message.
  28. // The message format string is loaded from the resources.
  29. //
  30. void __cdecl VrfErrorResourceFormat( UINT uIdResourceFormat,
  31. ... );
  32. ///////////////////////////////////////////////////////////////////////////
  33. //
  34. // Print out a message to the console
  35. // The message string is loaded from the resources.
  36. //
  37. void __cdecl VrfTPrintfResourceFormat( UINT uIdResourceFormat,
  38. ... );
  39. ///////////////////////////////////////////////////////////////////////////
  40. //
  41. // Print out a simple (non-formatted) message to the console
  42. // The message string is loaded from the resources.
  43. //
  44. void __cdecl VrfPrintStringFromResources( UINT uIdString );
  45. ///////////////////////////////////////////////////////////////////////////
  46. //
  47. // Report an error using a dialog box or a console message.
  48. // The message string is loaded from the resources.
  49. //
  50. void __cdecl VrfMesssageFromResource( UINT uIdString );
  51. ///////////////////////////////////////////////////////////////////////////
  52. //
  53. // Load a string from resources.
  54. // Return TRUE if we successfully loaded and FALSE if not.
  55. //
  56. // N.B. CString::LoadString doesn't work in cmd line mode
  57. //
  58. BOOL VrfLoadString( ULONG uIdResource,
  59. TCHAR *szBuffer,
  60. ULONG uBufferLength );
  61. ///////////////////////////////////////////////////////////////////////////
  62. //
  63. // Load a string from resources.
  64. // Return TRUE if we successfully loaded and FALSE if not.
  65. //
  66. // N.B. CString::LoadString doesn't work in cmd line mode
  67. //
  68. BOOL VrfLoadString( ULONG uIdResource,
  69. CString &strText );
  70. ///////////////////////////////////////////////////////////////////////////
  71. VOID CopyStringArray( const CStringArray &strArraySource,
  72. CStringArray &strArrayDest );
  73. /////////////////////////////////////////////////////////////////////////////
  74. BOOL IsDriverSigned( LPCTSTR szDriverName );
  75. /////////////////////////////////////////////////////////////////////////////
  76. BOOL VrfSetWindowText( CWnd &Wnd,
  77. ULONG uIdResourceString );
  78. /////////////////////////////////////////////////////////////////////////////
  79. BOOL VrfWriteVerifierSettings( BOOL bHaveNewDrivers,
  80. const CString &strDriversToVerify,
  81. BOOL bHaveNewFlags,
  82. DWORD dwVerifyFlags );
  83. /////////////////////////////////////////////////////////////////////////////
  84. BOOL VrfWriteRegistryDwordValue( HKEY hKey,
  85. LPCTSTR szValueName,
  86. DWORD dwValue );
  87. /////////////////////////////////////////////////////////////////////////////
  88. BOOL VrfWriteRegistryStringValue( HKEY hKey,
  89. LPCTSTR szValueName,
  90. LPCTSTR szValue );
  91. /////////////////////////////////////////////////////////////////////////////
  92. BOOL VrfReadVerifierSettings( CString &strDriversToVerify,
  93. DWORD &dwVerifyFlags );
  94. /////////////////////////////////////////////////////////////////////////////
  95. BOOL VrtLoadCurrentRegistrySettings( BOOL &bAllDriversVerified,
  96. CStringArray &astrDriversToVerify,
  97. DWORD &dwVerifyFlags );
  98. /////////////////////////////////////////////////////////////////////////////
  99. BOOL VrfIsDriversSetDifferent( CString strAllDrivers1,
  100. const CStringArray &astrVerifyDriverNames2 );
  101. /////////////////////////////////////////////////////////////////////////////
  102. VOID VrfSplitDriverNamesSpaceSeparated( CString strAllDrivers,
  103. CStringArray &astrVerifyDriverNames );
  104. /////////////////////////////////////////////////////////////////////////////
  105. BOOL VrfReadRegistryDwordValue( HKEY hKey,
  106. LPCTSTR szValueName,
  107. DWORD &dwValue );
  108. /////////////////////////////////////////////////////////////////////////////
  109. BOOL VrfReadRegistryStringValue( HKEY hKey,
  110. LPCTSTR szValueName,
  111. CString &strDriversToVerify );
  112. /////////////////////////////////////////////////////////////////////////////
  113. BOOL VrfDeleteAllVerifierSettings();
  114. /////////////////////////////////////////////////////////////////////////////
  115. BOOL VrfGetRuntimeVerifierData( CRuntimeVerifierData *pRuntimeVerifierData );
  116. /////////////////////////////////////////////////////////////////////////////
  117. PLOADED_IMAGE VrfImageLoad( LPTSTR szBinaryName,
  118. LPTSTR szDirectory );
  119. /////////////////////////////////////////////////////////////////////////////
  120. BOOL VrfDumpStateToFile( FILE *file );
  121. /////////////////////////////////////////////////////////////////////////////
  122. BOOL __cdecl VrfFTPrintf( FILE *file,
  123. LPCTSTR szFormat,
  124. ... );
  125. /////////////////////////////////////////////////////////////////////////////
  126. BOOL __cdecl VrfFTPrintfResourceFormat( FILE *file,
  127. UINT uIdResourceFormat,
  128. ... );
  129. /////////////////////////////////////////////////////////////////////////////
  130. BOOL VrfOuputStringFromResources( UINT uIdString,
  131. FILE *file );
  132. /////////////////////////////////////////////////////////////////////////////
  133. BOOL VrfSetNewFlagsVolatile( DWORD dwNewFlags );
  134. /////////////////////////////////////////////////////////////////////////////
  135. BOOL VrfAddDriversVolatile( const CStringArray &astrNewDrivers );
  136. /////////////////////////////////////////////////////////////////////////////
  137. BOOL VrfAddDriverVolatile( const CString &strCrtDriver );
  138. /////////////////////////////////////////////////////////////////////////////
  139. BOOL VrfRemoveDriversVolatile( const CStringArray &astrNewDrivers );
  140. /////////////////////////////////////////////////////////////////////////////
  141. BOOL VrfRemoveDriverVolatile( const CString &strDriverName );
  142. /////////////////////////////////////////////////////////////////////////////
  143. BOOL VrfEnableDebugPrivilege();
  144. /////////////////////////////////////////////////////////////////////////////
  145. VOID VrfDumpChangedSettings( UINT OldFlags,
  146. UINT NewFlags,
  147. INT_PTR nDriversVerified );
  148. /////////////////////////////////////////////////////////////////////////////
  149. DWORD VrfGetStandardFlags();
  150. /////////////////////////////////////////////////////////////////////////////
  151. VOID VrfAddMiniports( CStringArray &astrVerifiedDrivers );
  152. /////////////////////////////////////////////////////////////////////////////
  153. BOOL VrfIsDriverMiniport( CString &strCrtDriver,
  154. CString &strLinkedDriver );
  155. /////////////////////////////////////////////////////////////////////////////
  156. BOOL VrfIsDriverMiniport( PLOADED_IMAGE pLoadedImage,
  157. CString &strLinkedDriver );
  158. /////////////////////////////////////////////////////////////////////////////
  159. VOID VrfDumpRegistrySettingsToConsole();
  160. /////////////////////////////////////////////////////////////////////////////
  161. BOOL VrfIsNameAlreadyInList( LPCTSTR szDriver,
  162. LPCTSTR szAllDrivers );
  163. /////////////////////////////////////////////////////////////////////////////
  164. VOID VrfAddDriverNameNoDuplicates( LPCTSTR szDriver,
  165. CString &strAllDrivers );
  166. /////////////////////////////////////////////////////////////////////////////
  167. BOOL VrfIsStringInArray( LPCTSTR szText,
  168. const CStringArray &astrAllTexts );
  169. #endif //#ifndef __VRF_UTIL_H_INCLUDED__