/*++ Copyright (c) 2000-2001 Microsoft Corporation Module Name: params.h Abstract: Header of class that manages the dump parameters. Author: Stefan R. Steiner [ssteiner] 02-18-2000 Revision History: --*/ #ifndef __H_PARAMS_ #define __H_PARAMS_ #define FSD_MAX_PATH ( 8 * 1024 ) enum EFsDumpType { eFsDumpVolume = 1, eFsDumpDirTraverse, eFsDumpDirNoTraverse, eFsDumpFile, eFsDump_Last }; #define FSDMP_DEFAULT_MASKED_ATTRIBS ( FILE_ATTRIBUTE_ARCHIVE | FILE_ATTRIBUTE_NORMAL ) // // The dump parameters and methods to write to the dump file and error log // file. // class CDumpParameters { public: // Set up defaults for the parameters CDumpParameters( IN DWORD dwReserved ) : m_eFsDumpType( eFsDumpVolume ), m_fpErrLog( stderr ), m_fpDump( stdout ), m_fpExtraInfoDump( stdout ), m_bNoChecksums( FALSE ), m_bHex( FALSE ), m_bDontTraverseMountpoints( FALSE ), m_bDontChecksumHighLatencyData( TRUE ), m_bNoSpecialReparsePointProcessing( FALSE ), m_bAddMillisecsToTimestamps( FALSE ), m_bDontShowDirectoryTimestamps( TRUE ), m_bUnicode( FALSE), m_bNoHeaderFooter( TRUE ), m_bDumpCommaDelimited( TRUE ), m_bUseExcludeProcessor( FALSE ), m_bDontUseRegistryExcludes( FALSE ), m_bPrintDebugInfo( FALSE ), m_bHaveSecurityPrivilege( TRUE ), m_dwFileAttributesMask( FSDMP_DEFAULT_MASKED_ATTRIBS ), m_bDisableLongPaths( FALSE ), m_bEnableSDCtrlWordDump( TRUE ), m_bEnableObjectIdExtendedDataChecksums( FALSE ), m_bShowSymbolicSIDNames( FALSE ) { ; } virtual ~CDumpParameters(); WCHAR m_pwszULongHexFmt[16]; // Checksum printf style format EFsDumpType m_eFsDumpType; CBsString m_cwsErrLogFileName; CBsString m_cwsDumpFileName; CBsString m_cwsArgv0; CBsString m_cwsFullPathToEXE; BOOL m_bNoChecksums; BOOL m_bUnicode; BOOL m_bHex; BOOL m_bDontTraverseMountpoints; BOOL m_bDontChecksumHighLatencyData; BOOL m_bNoSpecialReparsePointProcessing; BOOL m_bAddMillisecsToTimestamps; BOOL m_bDontShowDirectoryTimestamps; BOOL m_bShowSymbolicSIDNames; BOOL m_bNoHeaderFooter; BOOL m_bDumpCommaDelimited; BOOL m_bUseExcludeProcessor; BOOL m_bDontUseRegistryExcludes; BOOL m_bPrintDebugInfo; BOOL m_bDisableLongPaths; BOOL m_bHaveSecurityPrivilege; BOOL m_bEnableObjectIdExtendedDataChecksums; BOOL m_bEnableSDCtrlWordDump; // This is a temporary flag DWORD m_dwFileAttributesMask; INT Initialize( IN INT argc, IN WCHAR *argv[] ); // Adds a wprintf style string to the error log file, automatically puts // a CR-LF at the end of each line inline VOID ErrPrint( IN LPCWSTR pwszMsgFormat, IN ... ) { ::fwprintf( m_fpErrLog, L" *** ERROR: " ); va_list marker; va_start( marker, pwszMsgFormat ); ::vfwprintf( m_fpErrLog, pwszMsgFormat, marker ); va_end( marker ); ::fwprintf( m_fpErrLog, m_bUnicode ? L"\r\n" : L"\n" ); } // Adds a wprintf style string to the dump file, automatically puts // a CR-LF at the end of each line inline VOID DumpPrintAlways( IN LPCWSTR pwszMsgFormat, IN ... ) { va_list marker; va_start( marker, pwszMsgFormat ); ::vfwprintf( m_fpDump, pwszMsgFormat, marker ); va_end( marker ); ::fwprintf( m_fpDump, m_bUnicode ? L"\r\n" : L"\n" ); } inline VOID DumpPrint( IN LPCWSTR pwszMsgFormat, IN ... ) { if ( m_fpExtraInfoDump != NULL ) { va_list marker; va_start( marker, pwszMsgFormat ); ::vfwprintf( m_fpExtraInfoDump, pwszMsgFormat, marker ); va_end( marker ); ::fwprintf( m_fpExtraInfoDump, m_bUnicode ? L"\r\n" : L"\n" ); } } inline FILE *GetDumpFile() { return m_fpExtraInfoDump; } inline FILE *GetDumpAlwaysFile() { return m_fpDump; } inline FILE *GEtErrLogFile() { return m_fpErrLog; } private: CDumpParameters() {} // Disallow copying FILE *m_fpErrLog; FILE *m_fpDump; FILE *m_fpExtraInfoDump; }; #endif // __H_PARAMS_