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

225 lines
5.6 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
//
// Copyright (C) Microsoft Corporation, 1999 - 2000
//
// File: programoptions.h
//
//--------------------------------------------------------------------------
// ProgramOptions.h: interface for the CProgramOptions class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_PROGRAMOPTIONS_H__D0C1E0B9_9F50_11D2_83A2_000000000000__INCLUDED_)
#define AFX_PROGRAMOPTIONS_H__D0C1E0B9_9F50_11D2_83A2_000000000000__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef NO_STRICT
#ifndef STRICT
#define STRICT 1
#endif
#endif /* NO_STRICT */
#include <WINDOWS.H>
#include <TCHAR.H>
class CProgramOptions
{
static const LPTSTR g_DefaultSymbolPath;
public:
bool fDoesModuleMatchOurSearch(LPCTSTR tszModulePathToTest);
void DisplaySimpleHelp();
void DisplayHelp();
CProgramOptions();
virtual ~CProgramOptions();
bool Initialize();
bool ProcessCommandLineArguments(int argc, TCHAR *argv[]);
// We're going to perform bitwise operations on any number after the -Y switch
// to determine what type of symbol path searching is desired...
enum SymbolPathSearchAlgorithms
{
enumSymbolPathNormal = 0x0,
enumSymbolPathOnly = 0x1,
enumSymbolPathRecursion = 0x2,
enumSymbolsModeUsingDBGInMISCSection = 0x4
};
enum DebugLevel
{
enumDebugSearchPaths = 0x1
};
enum ProgramModes {
// Help Modes
SimpleHelpMode,
HelpMode,
// Input Methods
InputProcessesFromLiveSystemMode, // Querying live processes
InputDriversFromLiveSystemMode, // Querying live processes
InputProcessesWithMatchingNameOrPID, // Did the user provide a PID or Process Name?
InputModulesDataFromFileSystemMode, // Input Modules Data from File System
InputCSVFileMode, // Input Data from CSV File
InputDmpFileMode, // Input Data from DMP File
// Collection Options
CollectVersionInfoMode,
// Matching Options
MatchModuleMode,
// Verification Modes
VerifySymbolsMode,
VerifySymbolsModeWithSymbolPath,
VerifySymbolsModeWithSymbolPathOnly,
VerifySymbolsModeWithSymbolPathRecursion,
VerifySymbolsModeUsingDBGInMISCSection,
VerifySymbolsModeWithSQLServer,
VerifySymbolsModeWithSQLServer2, // SQL2 - mjl 12/14/99
// Output Methods
OutputSymbolInformationMode,
BuildSymbolTreeMode,
PrintTaskListMode,
QuietMode, // No output to stdout...
OutputCSVFileMode,
OverwriteOutputFileMode,
OutputDiscrepanciesOnly,
ExceptionMonitorMode
};
bool GetMode(enum ProgramModes mode);
bool SetMode(enum ProgramModes mode, bool fState);
bool DisplayProgramArguments();
// INLINE Methods!
#ifdef _UNICODE
inline bool IsRunningWindows() { // If Windows 9x
return (m_osver.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS);
};
#endif
inline bool IsRunningWindowsNT() { // If Windows NT
return (m_osver.dwPlatformId == VER_PLATFORM_WIN32_NT);
};
inline LPTSTR GetProcessName() {
return m_tszProcessName;
};
inline LPTSTR GetModuleToMatch() {
return m_tszModuleToMatch;
};
inline LPTSTR GetOutputFilePath() {
return m_tszOutputCSVFilePath;
};
inline LPTSTR GetSQLServerName() {
return m_tszSQLServer;
};
inline LPTSTR GetSQLServerName2() {
return m_tszSQLServer2;
};
inline LPTSTR GetSymbolPath() {
return m_tszSymbolPath;
};
inline LPTSTR GetInputFilePath() {
return m_tszInputCSVFilePath;
};
inline LPTSTR GetDmpFilePath() {
return m_tszInputDmpFilePath;
};
inline LPTSTR GetSymbolTreeToBuild() {
return m_tszSymbolTreeToBuild;
};
inline LPTSTR GetInputModulesDataFromFileSystemPath() {
return m_tszInputModulesDataFromFileSystemPath;
};
inline DWORD GetProcessID() {
return m_iProcessID;
};
inline bool fDebugSearchPaths()
{
return (m_dwDebugLevel & enumDebugSearchPaths) == enumDebugSearchPaths;
};
inline unsigned int GetVerificationLevel() {
return m_iVerificationLevel;
};
protected:
OSVERSIONINFOA m_osver;
bool VerifySemiColonSeparatedPath(LPTSTR tszPath);
bool SetProcessID(DWORD iPID);
unsigned int m_iVerificationLevel;
DWORD m_iProcessID;
DWORD m_dwDebugLevel;
LPTSTR m_tszInputCSVFilePath;
LPTSTR m_tszInputDmpFilePath;
LPTSTR m_tszOutputCSVFilePath;
LPTSTR m_tszProcessName;
LPTSTR m_tszModuleToMatch;
LPTSTR m_tszSymbolPath;
LPTSTR m_tszSymbolTreeToBuild;
LPTSTR m_tszInputModulesDataFromFileSystemPath;
LPTSTR m_tszSQLServer;
LPTSTR m_tszSQLServer2; // SQL2 - mjl 12/14/99
bool m_fSimpleHelpMode;
bool m_fHelpMode;
bool m_fInputProcessesFromLiveSystemMode;
bool m_fInputDriversFromLiveSystemMode;
bool m_fInputProcessesWithMatchingNameOrPID;
bool m_fInputCSVFileMode;
bool m_fInputDmpFileMode;
bool m_fInputModulesDataFromFileSystemMode;
bool m_fMatchModuleMode;
bool m_fOutputSymbolInformationMode;
bool m_fCollectVersionInfoMode;
bool m_fVerifySymbolsMode;
bool m_fVerifySymbolsModeWithSymbolPath;
bool m_fVerifySymbolsModeWithSymbolPathOnly;
bool m_fVerifySymbolsModeWithSymbolPathRecursion;
bool m_fVerifySymbolsModeUsingDBGInMISCSection;
bool m_fVerifySymbolsModeWithSQLServer;
bool m_fVerifySymbolsModeWithSQLServer2; // SQL2 - mjl 12/14/99
bool m_fSymbolTreeToBuildMode;
bool m_fPrintTaskListMode;
bool m_fQuietMode;
bool m_fOutputCSVFileMode;
bool m_fOutputDiscrepanciesOnly;
bool m_fOverwriteOutputFileMode;
bool m_fExceptionMonitorMode;
};
#endif // !defined(AFX_PROGRAMOPTIONS_H__D0C1E0B9_9F50_11D2_83A2_000000000000__INCLUDED_)