/**************************************************************************** Copyright information : Copyright (c) 1998-1999 Microsoft Corporation File Name : WMICommandLn.h Project Name : WMI Command Line Author Name : Ch.Sriramachandramurthy Date of Creation (dd/mm/yy) : 27th-September-2000 Version Number : 1.0 Brief Description : This file consist of class declaration of class CWMICommandLine Revision History : Last Modified By : Ch. Sriramachandramurthy Last Modified Date : 16th-January-2001 ****************************************************************************/ // WMICommandLine.h : header file // /*------------------------------------------------------------------- Class Name : CWMICommandLine Class Type : Concrete Brief Description : This class encapsulates the functionality needed for synchronization the funtionality of three functional components identified for the WmiCli.exe. Super Classes : None Sub Classes : None Classes Used : CParsedInfo CExecEngine CFormatEngine CParserEngine Interfaces Used : WMI COM Interfaces --------------------------------------------------------------------*/ // forward declaration of classes class CParserEngine; class CExecEngine; class CFormatEngine; class CParsedInfo; ///////////////////////////////////////////////////////////////////////////// // CWMICommandLine class CWMICommandLine { public: // Construction CWMICommandLine(); // Destruction ~CWMICommandLine(); // Restrict Assignment CWMICommandLine& operator=(CWMICommandLine& rWmiCmdLn); // Attributes private: //Pointer to the locator object . IWbemLocator *m_pIWbemLocator; //CParserEngine object CParserEngine m_ParserEngine; //CExecEngine object CExecEngine m_ExecEngine; //CFormatEngine object CFormatEngine m_FormatEngine; //CParsedInfo object CParsedInfo m_ParsedInfo; // error level WMICLIUINT m_uErrLevel; // handle to registry key HKEY m_hKey; // handle Ctrl+ events BOOL m_bBreakEvent; // specifies accepting input (==TRUE) or executing command (==FALSE) BOOL m_bAccCmd; // << description to be added >> BOOL m_bDispRes; // Flag to specify windows socket interface initialization. BOOL m_bInitWinSock; // Buffer to hold data to be send to clipboard. CHString m_chsClipBoardBuffer; // added by (Nag) BSTRMAP m_bmKeyWordtoFileName; // Height of console buffer before starting utility. SHORT m_nHeight; // Width of console buffer before starting utility. SHORT m_nWidth; BOOL m_bCtrlHandlerError; // Checks whether mof files timestamps are the same as those which were mofcompiled. BOOL EqualTimeStamps( const _bstr_t& path, LPCWSTR mofs[], __int64* filestamps, DWORD dw_mofs ); // Set mof files timestamps to registry when mofcompiled. BOOL SetTimeStamps( LPCWSTR mofs[], const __int64* filestamps, DWORD dw_mofs ); // clean registry and namespace when update fails void MofCompFailureCleanUp ( LPCWSTR mofs[], DWORD dw_mofs ); // Operations public: // Does the initialization ofthe COM library and the security // at the process level BOOL Initialize(); //Gets the Format Engine Object CFormatEngine& GetFormatObject(); //Gets the Parse Information Object CParsedInfo& GetParsedInfoObject(); //Uninitializes the the member variables when the execution of a //command string issued on the command line is completed. void Uninitialize(); //processes the given command string SESSIONRETCODE ProcessCommandAndDisplayResults(_TCHAR* pszBuffer); //Puts the process to a wait state, launches a worker thread //that keeps track of kbhit() void SleepTillTimeoutOrKBhit(DWORD dwMilliSeconds); //Thread procedure polling for keyboard hit static DWORD WINAPI PollForKBhit(LPVOID lpParam); //Function to check whether the input string's first token //is 'quit'|'exit', if so return true else return false. BOOL IsSessionEnd(); //Set the session error value void SetSessionErrorLevel(SESSIONRETCODE ssnRetCode); //Get the session error value WMICLIUINT GetSessionErrorLevel(); // This function check whether the /USER global switch // has been specified without /PASSWORD, if so prompts // for the password void CheckForPassword(); // Checks whether the given namespace is available or not. BOOL IsNSAvailable(const _bstr_t& bstrNS); // Checks whether the wmic.exe is being launched for the first time. BOOL IsFirstTime(); // Register the aliases info / localized descriptions HRESULT RegisterMofs(); // Compile the MOF file. HRESULT CompileMOFFile(IMofCompiler* pIMofComp, const _bstr_t& bstrFile, WMICLIINT& nErr); // Set break event falg void SetBreakEvent(BOOL bFlag); // Get break event flag BOOL GetBreakEvent(); // Set Accept Command flag void SetAcceptCommand(BOOL bFlag); // Get Accept Command flag BOOL GetAcceptCommand(); // Set displayresults flag status void SetDisplayResultsFlag(BOOL bFlag); // Get DisplayResults flag status BOOL GetDisplayResultsFlag(); // Set Windows sockect interface flag void SetInitWinSock(BOOL bFlag); // Get Windows sockect interface flag BOOL GetInitWinSock(); // Buffer data to send clipboard. void AddToClipBoardBuffer(LPCWSTR pszOutput); // Get Buffered output in clip board buffer. CHString& GetClipBoardBuffer(); // Clear Clip Board Buffer. void EmptyClipBoardBuffer(); // Check if the file is xml or batch file. If it is batch file // then parse it, get commands and write the commands into // batch file and redirect the stdin to that file. BOOL ReadXMLOrBatchFile(HANDLE hInFile); // Frames the XML string for context info void FrameContextInfoFragment(_bstr_t& bstrContext); // Frames the XML header info void FrameNodeListFragment(_bstr_t& bstrNodeList); // Frames the XML string for Request info void FrameXMLHeader(_bstr_t& bstrHeader, WMICLIINT nIter); // Frames the XML string for NodeList info void FrameRequestNode(_bstr_t& bstrRequest); // Frames the XML string for commandline info void FrameCommandLineComponents(_bstr_t& bstrCommandComponent); // Frames the XML string for formats info void FrameFormats(_bstr_t& bstrFormats); // Frames the XML string for properties info void FramePropertiesInfo(_bstr_t& bstrProperties); // Gets the xslfile name corrsponding to the keyword passed // from the BSTRMAP BOOL GetFileFromKey(_bstr_t bstrkeyName, _bstr_t& bstrFileName); // Frames the BSTR Map contains the key words and // corresponding files from the XSL mapping file void GetFileNameMap(); // Get the XSL file names for keywords void GetXSLMappings(_TCHAR *pszFilePath); // This function returns a reference to the token vector CHARVECTOR& GetTokenVector(); inline BOOL GetCtrlHandlerError() { return m_bCtrlHandlerError; }; inline void SetCtrlHandlerError(BOOL bFlag) { m_bCtrlHandlerError = bFlag; }; // sets/resets screen buffer BOOL ScreenBuffer ( BOOL bSet = TRUE ); // return mappings const BSTRMAP* GetMappingsMap () const { return &m_bmKeyWordtoFileName; }; };