windows-nt/Source/XPSP1/NT/admin/wmi/wbem/tools/wmic/wmicmdln.h
2020-09-26 16:20:57 +08:00

225 lines
6.1 KiB
C++

/****************************************************************************
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.
_bstr_t m_bstrClipBoardBuffer;
// 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;
// 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(LPSTR pszOutput);
// Get Buffered output in clip board buffer.
_bstr_t& 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);
};