667 lines
17 KiB
C++
667 lines
17 KiB
C++
#if !defined __PCH_H
|
|
#define __PCH_H
|
|
|
|
#define SECURITY_WIN32 1
|
|
|
|
// The debugger can't handle symbols more than 255 characters long.
|
|
// STL often creates symbols longer than that.
|
|
// When symbols are longer than 255 characters, the warning is issued.
|
|
#pragma warning(disable:4786)
|
|
//////////////////////////////////////////////////////////////////////
|
|
// HEADER INCLUDES //
|
|
//////////////////////////////////////////////////////////////////////
|
|
#include "resource.h"
|
|
#include <windows.h>
|
|
#include <vector>
|
|
#include <map>
|
|
#include <tchar.h>
|
|
#include <comdef.h>
|
|
#include <wbemidl.h>
|
|
#include <iostream>
|
|
#include <msxml2.h>
|
|
#include <lmcons.h>
|
|
#include <conio.h>
|
|
#include <math.h>
|
|
#include <chstring.h>
|
|
#include <shlwapi.h>
|
|
#include <winsock2.h>
|
|
#include <security.h>
|
|
#include <Provexce.h>
|
|
|
|
using namespace std;
|
|
|
|
class CParsedInfo;
|
|
class CWMICommandLine;
|
|
extern CWMICommandLine g_wmiCmd;
|
|
|
|
|
|
#ifdef _WIN64
|
|
typedef __int64 WMICLIINT;
|
|
#else
|
|
typedef int WMICLIINT;
|
|
#endif
|
|
|
|
#ifdef _WIN64
|
|
typedef UINT_PTR WMICLIUINT;
|
|
#else
|
|
typedef UINT WMICLIUINT;
|
|
#endif
|
|
|
|
#ifdef _WIN64
|
|
typedef DWORD_PTR WMICLIULONG;
|
|
#else
|
|
typedef ULONG WMICLIULONG;
|
|
#endif
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// USER DEFINED CONSTANTS //
|
|
//////////////////////////////////////////////////////////////////////
|
|
#define MAX_BUFFER 4095
|
|
#define BUFFER32 32
|
|
#define BUFFER64 64
|
|
#define BUFFER512 512
|
|
#define BUFFER255 255
|
|
#define BUFFER1024 1024
|
|
|
|
#define CLI_ROLE_DEFAULT _T("root\\cli")
|
|
#define CLI_NAMESPACE_DEFAULT _T("root\\cimv2")
|
|
#define CLI_LOCALE_DEFAULT _T("ms_409")
|
|
|
|
#define CLI_TOKEN_W _T("W")
|
|
#define CLI_TOKEN_CLASS _T("CLASS")
|
|
#define CLI_TOKEN_PATH _T("PATH")
|
|
#define CLI_TOKEN_WHERE _T("WHERE")
|
|
#define CLI_TOKEN_EXIT _T("EXIT")
|
|
#define CLI_TOKEN_RESTORE _T("RESTORE")
|
|
#define CLI_TOKEN_QUIT _T("QUIT")
|
|
#define CLI_TOKEN_CONTEXT _T("CONTEXT")
|
|
|
|
#define CLI_TOKEN_GET _T("GET")
|
|
#define CLI_TOKEN_LIST _T("LIST")
|
|
#define CLI_TOKEN_SET _T("SET")
|
|
#define CLI_TOKEN_DUMP _T("DUMP")
|
|
#define CLI_TOKEN_CALL _T("CALL")
|
|
#define CLI_TOKEN_ASSOC _T("ASSOC")
|
|
#define CLI_TOKEN_CREATE _T("CREATE")
|
|
#define CLI_TOKEN_DELETE _T("DELETE")
|
|
|
|
#define CLI_TOKEN_HELP _T("?")
|
|
#define CLI_TOKEN_NAMESPACE _T("NAMESPACE")
|
|
#define CLI_TOKEN_ROLE _T("ROLE")
|
|
#define CLI_TOKEN_NODE _T("NODE")
|
|
#define CLI_TOKEN_IMPLEVEL _T("IMPLEVEL")
|
|
#define CLI_TOKEN_AUTHLEVEL _T("AUTHLEVEL")
|
|
#define CLI_TOKEN_LOCALE _T("LOCALE")
|
|
#define CLI_TOKEN_PRIVILEGES _T("PRIVILEGES")
|
|
#define CLI_TOKEN_TRACE _T("TRACE")
|
|
#define CLI_TOKEN_RECORD _T("RECORD")
|
|
#define CLI_TOKEN_INTERACTIVE _T("INTERACTIVE")
|
|
#define CLI_TOKEN_FAILFAST _T("FAILFAST")
|
|
#define CLI_TOKEN_USER _T("USER")
|
|
#define CLI_TOKEN_PASSWORD _T("PASSWORD")
|
|
#define CLI_TOKEN_OUTPUT _T("OUTPUT")
|
|
#define CLI_TOKEN_APPEND _T("APPEND")
|
|
#define CLI_TOKEN_AGGREGATE _T("AGGREGATE")
|
|
|
|
#define CLI_TOKEN_COLON _T(":")
|
|
#define CLI_TOKEN_COMMA _T(",")
|
|
#define CLI_TOKEN_FSLASH _T("/")
|
|
#define CLI_TOKEN_HYPHEN _T("-")
|
|
#define CLI_TOKEN_HASH _T("#")
|
|
#define CLI_TOKEN_SPACE _T(" ")
|
|
#define CLI_TOKEN_DOT _T(".")
|
|
#define CLI_TOKEN_2DOT _T("..")
|
|
#define CLI_TOKEN_EQUALTO _T("=")
|
|
#define CLI_TOKEN_NULL _T("")
|
|
#define CLI_TOKEN_BSLASH _T("\\")
|
|
#define CLI_TOKEN_2BSLASH _T("\\\\")
|
|
#define CLI_TOKEN_LEFT_PARAN _T("(")
|
|
#define CLI_TOKEN_RIGHT_PARAN _T(")")
|
|
#define CLI_TOKEN_ONE _T("1")
|
|
#define CLI_TOKEN_TWO _T("2")
|
|
#define CLI_TOKEN_SINGLE_QUOTE _T("\'")
|
|
#define CLI_TOKEN_DOUBLE_QUOTE _T("\"")
|
|
#define CLI_TOKEN_TAB _T("\t")
|
|
#define CLI_TOKEN_SEMICOLON _T(";")
|
|
#define CLI_TOKEN_NEWLINE _T("\n")
|
|
|
|
#define CLI_TOKEN_TABLE _T("TABLE")
|
|
#define CLI_TOKEN_MOF _T("MOF")
|
|
#define CLI_TOKEN_TEXTVALUE _T("TEXTVALUE")
|
|
|
|
#define CLI_TOKEN_ENABLE _T("ENABLE")
|
|
#define CLI_TOKEN_DISABLE _T("DISABLE")
|
|
#define CLI_TOKEN_ON _T("ON")
|
|
#define CLI_TOKEN_OFF _T("OFF")
|
|
|
|
#define CLI_TOKEN_BRIEF _T("BRIEF")
|
|
#define CLI_TOKEN_FULL _T("FULL")
|
|
|
|
#define CLI_TOKEN_STDOUT _T("STDOUT")
|
|
#define CLI_TOKEN_CLIPBOARD _T("CLIPBOARD")
|
|
|
|
#define CLI_TOKEN_VALUE _T("VALUE")
|
|
#define CLI_TOKEN_ALL _T("ALL")
|
|
#define CLI_TOKEN_FORMAT _T("FORMAT")
|
|
#define CLI_TOKEN_EVERY _T("EVERY")
|
|
#define CLI_TOKEN_REPEAT _T("REPEAT")
|
|
#define CLI_TOKEN_TRANSLATE _T("TRANSLATE")
|
|
|
|
#define CLI_TOKEN_NONINTERACT _T("NOINTERACTIVE")
|
|
#define CLI_TOKEN_DUMP _T("DUMP")
|
|
|
|
#define CLI_TOKEN_FROM _T("FROM")
|
|
#define CLI_TOKEN_WHERE _T("WHERE")
|
|
|
|
|
|
#define XSL_FORMAT_TABLE _T("WmiCliTableFormat.xsl")
|
|
#define XSL_FORMAT_MOF _T("WmiCliMofFormat.xsl")
|
|
#define XSL_FORMAT_VALUE _T("WmiCliValueFormat.xsl")
|
|
#define XSL_FORMAT_TEXTVALUE _T("TextValueList.xsl")
|
|
|
|
#define TEMP_BATCH_FILE _T("TempWmicBatchFile.bat")
|
|
#define CLI_XSLMAPPINGS_FILE _T("XSL-Mappings.xml")
|
|
#define CLI_XSLSECTION_NAME _T("XSLMAPPINGS")
|
|
|
|
#define WBEM_LOCATION _T("\\wbem\\")
|
|
|
|
#define RESPONSE_YES _T("Y")
|
|
#define RESPONSE_NO _T("N")
|
|
#define RESPONSE_HELP _T("?")
|
|
|
|
#define EXEC_NAME _T("wmic")
|
|
|
|
#define CLI_TOKEN_AND _T(" AND ")
|
|
#define CLI_TOKEN_WRITE _T("Write")
|
|
|
|
|
|
#define WMISYSTEM_CLASS _T("__CLASS")
|
|
#define WMISYSTEM_DERIVATION _T("__DERIVATION")
|
|
#define WMISYSTEM_DYNASTY _T("__DYNASTY")
|
|
#define WMISYSTEM_GENUS _T("__GENUS")
|
|
#define WMISYSTEM_NAMESPACE _T("__NAMESPACE")
|
|
#define WMISYSTEM_PATH _T("__PATH")
|
|
#define WMISYSTEM_PROPERTYCOUNT _T("__PROPERTYCOUNT")
|
|
#define WMISYSTEM_REPLATH _T("__RELPATH")
|
|
#define WMISYSTEM_SERVER _T("__SERVER")
|
|
#define WMISYSTEM_SUPERCLASS _T("__SUPERCLASS")
|
|
|
|
#define MULTINODE_XMLSTARTTAG _T("<CIM>")
|
|
#define MULTINODE_XMLENDTAG _T("</CIM>")
|
|
|
|
#define MULTINODE_XMLASSOCSTAG1 _T("<ASSOC.OBJECTARRAY>")
|
|
#define MULTINODE_XMLASSOCETAG1 _T("</ASSOC.OBJECTARRAY>")
|
|
#define MULTINODE_XMLASSOCSTAG2 _T("<VALUE.OBJECT>")
|
|
#define MULTINODE_XMLASSOCETAG2 _T("</VALUE.OBJECT>")
|
|
|
|
#define CLI_TOKEN_RESULTCLASS _T("RESULTCLASS")
|
|
#define CLI_TOKEN_RESULTROLE _T("RESULTROLE")
|
|
#define CLI_TOKEN_ASSOCCLASS _T("ASSOCCLASS")
|
|
|
|
#define CLI_TOKEN_LOCALHOST _T("LOCALHOST")
|
|
|
|
#define NULL_STRING _T("\0")
|
|
#define NULL_CSTRING "\0"
|
|
|
|
#define BACK_SPACE 0x08
|
|
#define BLANK_CHAR 0x00
|
|
#define CARRIAGE_RETURN 0x0D
|
|
#define ASTERIX _T( "*" )
|
|
#define BEEP_SOUND _T( "\a" )
|
|
#define NULL_CHAR _T( '\0' )
|
|
#define TOKEN_NA _T("N/A")
|
|
#define MAXPASSWORDSIZE BUFFER64
|
|
#define FORMAT_STRING( buffer, format, value ) \
|
|
wsprintf( buffer, format, value )
|
|
|
|
#define EXCLUDESYSPROP _T("ExcludeSystemProperties")
|
|
#define NODESCAVLBL _T("<<Descripiton - Not Available>>")
|
|
|
|
#define UNICODE_SIGNATURE "\xFF\xFE"
|
|
#define UNICODE_BIGEND_SIGNATURE "\xFE\xFF"
|
|
#define UTF8_SIGNATURE "\xEF\xBB"
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// NUMERIC CONSTANTS //
|
|
//////////////////////////////////////////////////////////////////////
|
|
const WMICLIINT OUT_OF_MEMORY = 48111;
|
|
const WMICLIINT UNKNOWN_ERROR = 44520;
|
|
const WMICLIINT MOFCOMP_ERROR = 49999;
|
|
const WMICLIINT SET_CONHNDLR_ROUTN_FAIL = 48112;
|
|
const WMICLIINT NOINTERACTIVE = 0;
|
|
const WMICLIINT INTERACTIVE = 1;
|
|
const WMICLIINT DEFAULTMODE = 2;
|
|
const WMICLIINT DEFAULT_SCR_BUF_HEIGHT = 300;
|
|
const WMICLIINT DEFAULT_SCR_BUF_WIDTH = 1500;
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// ENUMERATED DATA TYPES //
|
|
//////////////////////////////////////////////////////////////////////
|
|
// IMPERSONATION LEVEL
|
|
typedef enum tag_IMPERSONATIONLEVEL
|
|
{
|
|
IMPDEFAULT = 0,
|
|
IMPANONYMOUS = 1,
|
|
IMPIDENTIFY = 2,
|
|
IMPERSONATE = 3,
|
|
IMPDELEGATE = 4
|
|
}IMPLEVEL;
|
|
|
|
// AUTHENTICATION LEVEL
|
|
typedef enum tag_AUTHENTICATIONLEVEL
|
|
{
|
|
AUTHDEFAULT = 0,
|
|
AUTHNONE = 1,
|
|
AUTHCONNECT = 2,
|
|
AUTHCALL = 3,
|
|
AUTHPKT = 4,
|
|
AUTHPKTINTEGRITY = 5,
|
|
AUTHPKTPRIVACY = 6
|
|
}AUTHLEVEL;
|
|
|
|
// HELP OPTION
|
|
typedef enum tag_HELPOPTION
|
|
{
|
|
HELPBRIEF = 0,
|
|
HELPFULL = 1
|
|
}HELPOPTION;
|
|
|
|
// ENUMERATED RETURN CODES for PARSER ENGINE
|
|
typedef enum tag_RETCODE
|
|
{
|
|
PARSER_ERROR = 0,
|
|
PARSER_DISPHELP = 1,
|
|
PARSER_EXECCOMMAND = 2,
|
|
PARSER_MESSAGE = 3,
|
|
PARSER_CONTINUE = 4,
|
|
PARSER_ERRMSG = 5,
|
|
PARSER_OUTOFMEMORY = 6
|
|
} RETCODE;
|
|
|
|
// ENUMERATED HELP OPTION POSSIBILITES
|
|
typedef enum tag_HELPTYPE
|
|
{
|
|
GlblAllInfo,
|
|
Namespace,
|
|
Role,
|
|
Node,
|
|
User,
|
|
Password,
|
|
Locale,
|
|
RecordPath,
|
|
Privileges,
|
|
Level,
|
|
AuthLevel,
|
|
Interactive,
|
|
Trace,
|
|
CmdAllInfo,
|
|
GETVerb,
|
|
SETVerb,
|
|
LISTVerb,
|
|
CALLVerb,
|
|
DUMPVerb,
|
|
ASSOCVerb,
|
|
CREATEVerb,
|
|
DELETEVerb,
|
|
AliasVerb,
|
|
PATH,
|
|
WHERE,
|
|
CLASS,
|
|
PWhere,
|
|
EXIT,
|
|
TRANSLATE,
|
|
EVERY,
|
|
FORMAT,
|
|
VERBSWITCHES,
|
|
DESCRIPTION,
|
|
GETSwitchesOnly,
|
|
LISTSwitchesOnly,
|
|
CONTEXTHELP,
|
|
GLBLCONTEXT,
|
|
ASSOCSwitchesOnly,
|
|
RESULTCLASShelp,
|
|
RESULTROLEhelp,
|
|
ASSOCCLASShelp,
|
|
FAILFAST,
|
|
REPEAT,
|
|
OUTPUT,
|
|
APPEND,
|
|
Aggregate
|
|
} HELPTYPE;
|
|
|
|
// ENUMERATED TOKEN LEVELS
|
|
typedef enum tag_TOKENLEVEL
|
|
{
|
|
LEVEL_ONE = 1,
|
|
LEVEL_TWO = 2
|
|
|
|
} TOKENLEVEL;
|
|
|
|
// ENUMERATED SESSION RETURN CODES.
|
|
typedef enum tag_SESSIONRETCODE
|
|
{
|
|
SESSION_ERROR = 0,
|
|
SESSION_SUCCESS = 1,
|
|
SESSION_QUIT = 2,
|
|
} SESSIONRETCODE;
|
|
|
|
// Property In or Out type for parameters
|
|
typedef enum tag_INOROUT
|
|
{
|
|
INP = 0,
|
|
OUTP = 1,
|
|
UNKNOWN = 2
|
|
} INOROUT;
|
|
|
|
typedef enum tag_GLBLSWITCHFLAG
|
|
{
|
|
NAMESPACE = 1,
|
|
NODE = 2,
|
|
USER = 4,
|
|
PASSWORD = 8,
|
|
LOCALE = 16
|
|
} GLBLSWITCHFLAG;
|
|
|
|
typedef enum tag_VERBTYPE
|
|
{
|
|
CLASSMETHOD = 0,
|
|
STDVERB = 1,
|
|
CMDLINE = 2,
|
|
NONALIAS = 3
|
|
} VERBTYPE;
|
|
|
|
typedef enum tag_ERRLOGOPT
|
|
{
|
|
NO_LOGGING = 0,
|
|
ERRORS_ONLY = 1,
|
|
EVERY_OPERATION = 2
|
|
} ERRLOGOPT;
|
|
|
|
// ENUMERATED Assoc Switches POSSIBILITES
|
|
typedef enum tag_ASSOCSwitch
|
|
{
|
|
RESULTCLASS = 0,
|
|
RESULTROLE = 1,
|
|
ASSOCCLASS = 2
|
|
} ASSOCSwitch;
|
|
|
|
// ENUMERATED Output or Append option
|
|
typedef enum tag_OUTPUTSPEC
|
|
{
|
|
STDOUT = 0,
|
|
CLIPBOARD = 1,
|
|
FILEOUTPUT = 2
|
|
} OUTPUTSPEC;
|
|
|
|
// ENUMERATED Interactive Option POSSIBILITES
|
|
typedef enum tag_INTEROPTION
|
|
{
|
|
NO = 0,
|
|
YES = 1,
|
|
HELP= 2
|
|
} INTEROPTION;
|
|
|
|
// ENUMERATED values for File types
|
|
typedef enum tag_FILETYPE
|
|
{
|
|
ANSI_FILE = 0,
|
|
UNICODE_FILE = 1,
|
|
UNICODE_BIGENDIAN_FILE = 2,
|
|
UTF8_FILE = 3
|
|
} FILETYPE;
|
|
//////////////////////////////////////////////////////////////////////
|
|
// TYPE DEFINITIONS //
|
|
//////////////////////////////////////////////////////////////////////
|
|
typedef vector<_TCHAR*> CHARVECTOR;
|
|
typedef vector<LPSTR> LPSTRVECTOR;
|
|
typedef map<_bstr_t, _bstr_t, less<_bstr_t> > BSTRMAP;
|
|
typedef map<_TCHAR*, _TCHAR*, less<_TCHAR*> > CHARMAP;
|
|
typedef basic_string<_TCHAR> STRING;
|
|
typedef map<_bstr_t, WMICLIINT> CHARINTMAP;
|
|
typedef vector<_bstr_t> BSTRVECTOR;
|
|
|
|
typedef map<_bstr_t, BSTRVECTOR, less<_bstr_t> > QUALDETMAP;
|
|
|
|
typedef struct tag_PROPERTYDETAILS
|
|
{
|
|
_bstr_t Derivation; // Derivation - actual property name.
|
|
_bstr_t Description; // Description about the property.
|
|
_bstr_t Type; // Type of property CIMTYPE.
|
|
_bstr_t Operation; // Read or Write flag for the property.
|
|
_bstr_t Default; // Default values in case of method parameters
|
|
INOROUT InOrOut; // Specifies Input or Output parameter in case
|
|
// of method arguments.
|
|
QUALDETMAP QualDetMap; // Qualifiers associated with the property.
|
|
} PROPERTYDETAILS;
|
|
typedef map<_bstr_t, PROPERTYDETAILS, less<_bstr_t> > PROPDETMAP;
|
|
|
|
typedef struct tag_METHODDETAILS // or VERBDETAILS
|
|
{
|
|
_bstr_t Description; // Desription.
|
|
_bstr_t Status; // Implemented or Not.
|
|
PROPDETMAP Params; // In and Out parameters and types of the method.
|
|
} METHODDETAILS;
|
|
typedef map<_bstr_t, METHODDETAILS, less<_bstr_t> > METHDETMAP;
|
|
typedef map<_bstr_t, BSTRVECTOR, less<_bstr_t> > ALSFMTDETMAP;
|
|
|
|
// For cascading transforms.
|
|
typedef struct tag_XSLTDET
|
|
{
|
|
_bstr_t FileName;
|
|
BSTRMAP ParamMap;
|
|
} XSLTDET;
|
|
|
|
typedef vector<XSLTDET> XSLTDETVECTOR;
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// USER DEFINED MACROS //
|
|
//////////////////////////////////////////////////////////////////////
|
|
// SAFEIRELEASE(pIObj)
|
|
#define SAFEIRELEASE(pIObj) \
|
|
if (pIObj) \
|
|
{ \
|
|
pIObj->Release(); \
|
|
pIObj = NULL; \
|
|
}
|
|
|
|
// SAFEBSTRFREE(bstrVal)
|
|
#define SAFEBSTRFREE(bstrVal) \
|
|
if(bstrVal) \
|
|
{ \
|
|
SysFreeString(bstrVal); \
|
|
bstrVal = NULL; \
|
|
}
|
|
|
|
// SAFEADESTROY(psaNames)
|
|
#define SAFEADESTROY(psaNames) \
|
|
if(psaNames) \
|
|
{ \
|
|
SafeArrayDestroy(psaNames); \
|
|
psaNames= NULL; \
|
|
}
|
|
|
|
// SAFEDELETE(pszVal)
|
|
#define SAFEDELETE(pszVal) \
|
|
if(pszVal) \
|
|
{ \
|
|
delete [] pszVal; \
|
|
pszVal = NULL; \
|
|
}
|
|
|
|
// VARIANTCLEAR(v)
|
|
#define VARIANTCLEAR(v) \
|
|
VariantClear(&v); \
|
|
|
|
// ONFAILTHROWERROR(hr)
|
|
#define ONFAILTHROWERROR(hr) \
|
|
if (FAILED(hr)) \
|
|
_com_issue_error(hr);
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// GLOBAL FUNCTIONS //
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
// Compare two strings (ignore case) and returns TRUE if
|
|
// they are equal
|
|
BOOL CompareTokens(_TCHAR* pszToken1, _TCHAR* pszToken2);
|
|
|
|
// Connect to the WMI on the specified machine with input
|
|
// user credentials.
|
|
|
|
HRESULT Connect(IWbemLocator* pILocator, IWbemServices** pISvc,
|
|
BSTR bstrNS, BSTR bstrUser, BSTR bstrPwd,
|
|
BSTR bstrLocale, CParsedInfo& rParsedInfo);
|
|
|
|
// Set the security privileges at the interface level
|
|
HRESULT SetSecurity(IUnknown* pIUnknown, _TCHAR* pszAuthority,
|
|
_TCHAR* pszDomain, _TCHAR* pszUser,
|
|
_TCHAR* pszPassword, UINT uAuthLevel,
|
|
UINT uImpLevel);
|
|
|
|
// Parse Authority string into user and domain info.
|
|
SCODE ParseAuthorityUserArgs(BSTR& bstrAuthArg, BSTR& bstrUserArg,
|
|
BSTR& bstrAuthority, BSTR& bstrUser);
|
|
|
|
// Converts the UNICODE string to MBCS string
|
|
BOOL ConvertWCToMBCS(LPTSTR lpszMsg, LPVOID* lpszDisp, UINT uCP);
|
|
|
|
// Finds a string in the CHARVECTOR.
|
|
BOOL Find(CHARVECTOR& cvVector,
|
|
_TCHAR* pszStrToFind,
|
|
CHARVECTOR::iterator& theIterator);
|
|
|
|
// Finds a property in the PROPDETMAP.
|
|
BOOL Find(PROPDETMAP& pdmPropDetMap,
|
|
_TCHAR* pszPropToFind,
|
|
PROPDETMAP::iterator& theIterator,
|
|
BOOL bExcludeNumbers = FALSE);
|
|
|
|
// Finds a property in the BSTRMAP.
|
|
BOOL Find(BSTRMAP& bmBstrMap,
|
|
_TCHAR* pszStrToFind,
|
|
BSTRMAP::iterator& theIterator);
|
|
|
|
// Frames the XSL File path and updates the rParsedInfo object.
|
|
BOOL FrameFileAndAddToXSLTDetVector(XSLTDET xdXSLTDet,
|
|
CParsedInfo& rParsedInfo);
|
|
|
|
|
|
// Unquotes the string enclosed in double quotes.
|
|
void UnQuoteString(_TCHAR*& pszString);
|
|
|
|
// Display contents of a VARIANT type data object.
|
|
void DisplayVARIANTContent(VARIANT vtObject);
|
|
|
|
// Get Attributes of property
|
|
HRESULT GetPropertyAttributes(IWbemClassObject* pIObj,
|
|
BSTR bstrProp,
|
|
PROPERTYDETAILS& pdPropDet,
|
|
BOOL bTrace);
|
|
// Convert CIMTYPE to VariantType
|
|
HRESULT ConvertCIMTYPEToVarType( VARIANT& varDest, VARIANT& varSrc,
|
|
_TCHAR* bstrCIMType );
|
|
|
|
// Displays the localized string
|
|
void DisplayMessage(LPTSTR lpszMsg, UINT uCP = CP_OEMCP,
|
|
BOOL bIsError = FALSE, BOOL bIsLog = FALSE);
|
|
|
|
// Free memory held by
|
|
void CleanUpCharVector(CHARVECTOR& cvCharVector);
|
|
|
|
void FindAndReplaceAll(STRING& strString, _TCHAR* pszFromStr,
|
|
_TCHAR* pszToStr);
|
|
|
|
// Search and replace all the occurences of entity references.
|
|
void FindAndReplaceEntityReferences(_bstr_t& bstrString);
|
|
|
|
BOOL IsSysProp(_TCHAR* pszProp);
|
|
|
|
void EraseMessage(UINT uID);
|
|
|
|
//To display the trace of COM methods invoked
|
|
void WMITRACEORERRORLOG(HRESULT hr, INT nLine, char* pszFile, _bstr_t bstrMsg,
|
|
DWORD dwThreadId, CParsedInfo& rParsedInfo, BOOL bTrace,
|
|
DWORD dwError = 0, _TCHAR* pszResult = NULL);
|
|
|
|
// Displays wi32 error.
|
|
void DisplayWin32Error();
|
|
|
|
// Accepts password in invisible mode.
|
|
void AcceptPassword(_TCHAR* pszPassword);
|
|
|
|
// Checks for output redirection.
|
|
BOOL IsRedirection();
|
|
|
|
// Checks for value set or not.
|
|
BOOL IsValueSet(_TCHAR* pszFromValue, _TCHAR& cValue1, _TCHAR& cValue2);
|
|
|
|
// Handler routine to handle CTRL + C so as free
|
|
// the memory allocated during the program execution.
|
|
BOOL CtrlHandler(DWORD fdwCtrlType);
|
|
|
|
void DisplayString(UINT uID, UINT uCP, LPTSTR lpszParam = NULL,
|
|
BOOL bIsError = FALSE, BOOL bIsLog = FALSE);
|
|
|
|
void SubstituteEscapeChars(CHString& sTemp, LPCWSTR lpszSub);
|
|
|
|
void RemoveEscapeChars(CHString& sTemp);
|
|
|
|
//Frames the Namespace
|
|
void FrameNamespace(_TCHAR* pszRoleOrNS, _TCHAR* pszRoleOrNSToUpdate);
|
|
|
|
// Set the buffer size of the command line
|
|
void SetScreenBuffer(SHORT nHeight = DEFAULT_SCR_BUF_HEIGHT,
|
|
SHORT nWidth = DEFAULT_SCR_BUF_WIDTH);
|
|
|
|
// Get the buffer size of the command line
|
|
void GetScreenBuffer(SHORT& nHeight, SHORT& nWidth);
|
|
|
|
// Formats the resource string with parameter substitution.
|
|
void WMIFormatMessage(UINT uID, WMICLIINT nParamCount, _bstr_t& bstrMsg,
|
|
LPTSTR lpszParam, ...);
|
|
|
|
// Validates a node by using socket functions.
|
|
BOOL PingNode(_TCHAR* pszNode);
|
|
|
|
// If pszNodeName == NULL then check for GetNode() else pszNodeName itself.
|
|
BOOL IsFailFastAndNodeExist(CParsedInfo& rParsedInfo, _TCHAR* pszNodeName = NULL);
|
|
|
|
// Initilaizes windows socket interface.
|
|
BOOL InitWinsock ();
|
|
|
|
// Uninitializes windows socket interface.
|
|
BOOL TermWinsock ();
|
|
|
|
// Get _bstr_t object equivalent to Varaint passed.
|
|
void GetBstrTFromVariant(VARIANT& vtVar, _bstr_t& bstrObj,
|
|
_TCHAR* pszType = NULL);
|
|
|
|
// Close the output file.
|
|
BOOL CloseOutputFile();
|
|
|
|
// Close the append file.
|
|
BOOL CloseAppendFile();
|
|
|
|
// Checks if the next token indicates the presence
|
|
// of '/' or '-'
|
|
BOOL IsOption(_TCHAR* pszToken);
|
|
|
|
// Copy string to global memory.
|
|
HGLOBAL CopyStringToHGlobal(LPTSTR psz);
|
|
|
|
// Copy data to clip board.
|
|
void CopyToClipBoard(_bstr_t& bstrClipBoardBuffer);
|
|
|
|
// Checks file is valid or not.
|
|
RETCODE IsValidFile(_TCHAR* pszFileName);
|
|
|
|
// It checks whether the current operation is class
|
|
// level operation or instance level operation
|
|
BOOL IsClassOperation(CParsedInfo& rParsedInfo);
|
|
|
|
// Enable or Disable all privileges
|
|
HRESULT ModifyPrivileges(BOOL bEnable);
|
|
|
|
#endif |