Leaked source code of windows server 2003
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.
 
 
 
 
 
 

251 lines
7.2 KiB

/****************************************************************************
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;
};
};