225 lines
5.6 KiB
C++
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_)
|