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.
 
 
 
 
 
 

72 lines
2.6 KiB

#ifndef _utils_h_
#define _utils_h_
#define MAX_BUF_SIZE 1024
#define MAX_KEY_NAME_SIZE 32
#define MAX_KEY_TYPE_SIZE 32
class CUtils
{
public:
static bool GetClass(LPCWSTR,WMI_CLASS**);
static bool GetAssociation(LPCWSTR, WMI_ASSOCIATION**);
static KeyRef* GetKey(ParsedObjectPath*, WCHAR*);
static void GetMetabasePath(IWbemClassObject*, ParsedObjectPath*, WMI_CLASS*, _bstr_t&);
static void GetToken(WCHAR**, WCHAR*);
void ExecMethodAsync(BSTR, BSTR, IWbemContext*, IWbemClassObject*, IWbemObjectSink*, CWbemServices* );
void DeleteObjectAsync(CWbemServices*, ParsedObjectPath*, CMetabase&);
void PutObjectAsync(IWbemClassObject*, IWbemClassObject*, ParsedObjectPath*, long);
void EnumObjectAsync(BSTR, CWbemServices*, IWbemObjectSink FAR*);
HRESULT GetObjectAsync(CWbemServices*, IWbemClassObject**, ParsedObjectPath*, CMetabase&);
void MzCat (WCHAR**, const WCHAR*);
bool TypeStringToEnum(enum_KEY_TYPE&, LPCWSTR);
bool TypeEnumToString(LPWSTR, enum_KEY_TYPE);
void Throw_Exception(HRESULT, METABASE_PROPERTY*);
private:
bool GetMethod(LPCWSTR, WMI_METHOD**, WMI_METHOD**);
void ExecFtpServiceMethod(LPCWSTR, LPCWSTR, LPCWSTR, IWbemContext*, IWbemClassObject*, IWbemObjectSink*, CWbemServices*);
void ExecWebServiceMethod(LPCWSTR, LPCWSTR, LPCWSTR, IWbemContext*, IWbemClassObject*, IWbemObjectSink*, CWbemServices*);
void ExecWebAppMethod(LPCWSTR, LPCWSTR, LPCWSTR, IWbemContext*, IWbemClassObject*, IWbemObjectSink*, CWbemServices*);
void ExecComputerMethod(LPCWSTR, LPCWSTR, LPCWSTR, IWbemContext*, IWbemClassObject*, IWbemObjectSink*, CWbemServices*);
void ExecCertMapperMethod(LPCWSTR, LPCWSTR, LPCWSTR, IWbemContext*, IWbemClassObject*, IWbemObjectSink*, CWbemServices*);
void FindUniqueServerName(LPCWSTR, _bstr_t&);
private:
static CSynchObject s_synObject;
};
class CIIsProvException
{
public:
CIIsProvException() {m_hr = ERROR_SUCCESS; m_psz = NULL;};
HRESULT m_hr;
WCHAR* m_psz;
};
#define THROW_ON_FALSE(b) \
if (!b) \
throw(WBEM_E_FAILED);
// if client calcelled, stop and return successfully
#define THROW_ON_ERROR(hr) \
if (hr != ERROR_SUCCESS) \
throw(hr == WBEM_E_CALL_CANCELLED ? WBEM_NO_ERROR : hr);
#define THROW_E_ON_ERROR(hr, pmbp) \
if (hr != ERROR_SUCCESS) \
{ \
CUtils obj; \
obj.Throw_Exception(hr, pmbp); \
}
#endif