538 lines
9.7 KiB
C++
538 lines
9.7 KiB
C++
// (C) 1999 Microsoft Corporation
|
|
|
|
#define WBEM_CLASS_EXTENDEDSTATUS L"__ExtendedStatus"
|
|
|
|
#define WBEM_TASKSTATE_START 0x0
|
|
#define WBEM_TASKSTATE_ASYNCHRONOUSCOMPLETE 0x100000
|
|
#define WBEM_TASKSTATE_ASYNCHRONOUSABORT 0x100001
|
|
|
|
class WbemTaskObject : public ProvTaskObject
|
|
{
|
|
private:
|
|
|
|
LONG m_ReferenceCount ;
|
|
|
|
protected:
|
|
|
|
ULONG m_State ;
|
|
WbemProviderErrorObject m_ErrorObject ;
|
|
|
|
ULONG m_RequestHandle ;
|
|
ULONG m_OperationFlag ;
|
|
IWbemClassObject *m_ClassObject ;
|
|
IWbemObjectSink *m_NotificationHandler ;
|
|
IWbemContext *m_Ctx ;
|
|
CImpFrameworkProv *m_Provider ;
|
|
|
|
protected:
|
|
|
|
void SetRequestHandle ( ULONG a_RequestHandle ) ;
|
|
BOOL GetRequestHandle () ;
|
|
BOOL GetClassObject ( wchar_t *a_Class ) ;
|
|
BOOL GetExtendedNotifyStatusObject ( IWbemClassObject **a_NotifyObject ) ;
|
|
BOOL GetNotifyStatusObject ( IWbemClassObject **a_NotifyObject ) ;
|
|
|
|
protected:
|
|
|
|
virtual void ProcessComplete () = 0 ;
|
|
|
|
public:
|
|
|
|
WbemTaskObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
ULONG a_OperationFlag ,
|
|
IWbemContext *a_Ctx
|
|
) ;
|
|
|
|
~WbemTaskObject () ;
|
|
|
|
WbemProviderErrorObject &GetErrorObject () ;
|
|
|
|
ULONG AddRef () ;
|
|
ULONG Release () ;
|
|
|
|
} ;
|
|
|
|
class GetObjectEventObject : public WbemTaskObject
|
|
{
|
|
private:
|
|
|
|
wchar_t *m_ObjectPath ;
|
|
wchar_t *m_Class ;
|
|
ParsedObjectPath *m_ParsedObjectPath ;
|
|
CObjectPathParser m_ObjectPathParser ;
|
|
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
BOOL GetObject ( WbemProviderErrorObject &a_ErrorObject ) ;
|
|
|
|
public:
|
|
|
|
GetObjectEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
wchar_t *a_ObjectPath ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~GetObjectEventObject () ;
|
|
|
|
void Process () ;
|
|
} ;
|
|
|
|
class GetObjectAsyncEventObject : public GetObjectEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
|
|
public:
|
|
|
|
GetObjectAsyncEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
wchar_t *a_ObjectPath ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~GetObjectAsyncEventObject () ;
|
|
} ;
|
|
|
|
class CreateInstanceEnumEventObject : public WbemTaskObject
|
|
{
|
|
private:
|
|
|
|
wchar_t *m_Class ;
|
|
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
BOOL CreateInstanceEnum ( WbemProviderErrorObject &a_ErrorObject ) ;
|
|
|
|
public:
|
|
|
|
CreateInstanceEnumEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
BSTR a_Class ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~CreateInstanceEnumEventObject () ;
|
|
|
|
void Process () ;
|
|
} ;
|
|
|
|
class CreateInstanceEnumAsyncEventObject : public CreateInstanceEnumEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
|
|
public:
|
|
|
|
CreateInstanceEnumAsyncEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
BSTR a_Class ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~CreateInstanceEnumAsyncEventObject () ;
|
|
} ;
|
|
|
|
class ExecQueryEventObject : public WbemTaskObject
|
|
{
|
|
private:
|
|
|
|
wchar_t *m_QueryFormat ;
|
|
wchar_t *m_Query ;
|
|
wchar_t *m_Class ;
|
|
|
|
CTextLexSource m_QuerySource ;
|
|
SQL1_Parser m_SqlParser ;
|
|
SQL_LEVEL_1_RPN_EXPRESSION *m_RPNExpression ;
|
|
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
BOOL ExecQuery ( WbemProviderErrorObject &a_ErrorObject ) ;
|
|
|
|
public:
|
|
|
|
ExecQueryEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
BSTR a_QueryFormat ,
|
|
BSTR a_Query ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~ExecQueryEventObject () ;
|
|
|
|
void Process () ;
|
|
} ;
|
|
|
|
class ExecQueryAsyncEventObject : public ExecQueryEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
|
|
public:
|
|
|
|
ExecQueryAsyncEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
BSTR a_QueryFormat ,
|
|
BSTR a_Query ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~ExecQueryAsyncEventObject () ;
|
|
} ;
|
|
|
|
class PutInstanceEventObject : public WbemTaskObject
|
|
{
|
|
private:
|
|
|
|
IWbemClassObject *m_Object ;
|
|
wchar_t *m_Class ;
|
|
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
BOOL PutInstance ( WbemProviderErrorObject &a_ErrorObject ) ;
|
|
|
|
public:
|
|
|
|
PutInstanceEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
IWbemClassObject *a_Object ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~PutInstanceEventObject () ;
|
|
|
|
void Process () ;
|
|
} ;
|
|
|
|
class PutInstanceAsyncEventObject : public PutInstanceEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
|
|
public:
|
|
|
|
PutInstanceAsyncEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
IWbemClassObject *a_Object ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~PutInstanceAsyncEventObject () ;
|
|
} ;
|
|
|
|
class PutClassEventObject : public WbemTaskObject
|
|
{
|
|
private:
|
|
|
|
IWbemClassObject *m_Object ;
|
|
wchar_t *m_Class ;
|
|
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
BOOL PutClass ( WbemProviderErrorObject &a_ErrorObject ) ;
|
|
|
|
public:
|
|
|
|
PutClassEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
IWbemClassObject *a_Object ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~PutClassEventObject () ;
|
|
|
|
void Process () ;
|
|
} ;
|
|
|
|
class PutClassAsyncEventObject : public PutClassEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
|
|
public:
|
|
|
|
PutClassAsyncEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
IWbemClassObject *a_Object ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~PutClassAsyncEventObject () ;
|
|
} ;
|
|
|
|
class CreateClassEnumEventObject : public WbemTaskObject
|
|
{
|
|
private:
|
|
|
|
wchar_t *m_SuperClass ;
|
|
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
BOOL CreateClassEnum ( WbemProviderErrorObject &a_ErrorObject ) ;
|
|
|
|
public:
|
|
|
|
CreateClassEnumEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
BSTR a_SuperClass ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~CreateClassEnumEventObject () ;
|
|
|
|
void Process () ;
|
|
} ;
|
|
|
|
class CreateClassEnumAsyncEventObject : public CreateClassEnumEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
|
|
public:
|
|
|
|
CreateClassEnumAsyncEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
BSTR a_SuperClass ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~CreateClassEnumAsyncEventObject () ;
|
|
} ;
|
|
|
|
class DeleteInstanceEventObject : public WbemTaskObject
|
|
{
|
|
private:
|
|
|
|
wchar_t *m_ObjectPath ;
|
|
wchar_t *m_Class ;
|
|
ParsedObjectPath *m_ParsedObjectPath ;
|
|
CObjectPathParser m_ObjectPathParser ;
|
|
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
BOOL DeleteInstance ( WbemProviderErrorObject &a_ErrorObject ) ;
|
|
|
|
public:
|
|
|
|
DeleteInstanceEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
wchar_t *a_ObjectPath ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~DeleteInstanceEventObject () ;
|
|
|
|
void Process () ;
|
|
} ;
|
|
|
|
class DeleteInstanceAsyncEventObject : public DeleteInstanceEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
|
|
public:
|
|
|
|
DeleteInstanceAsyncEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
wchar_t *a_ObjectPath ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~DeleteInstanceAsyncEventObject () ;
|
|
} ;
|
|
|
|
class DeleteClassEventObject : public WbemTaskObject
|
|
{
|
|
private:
|
|
|
|
wchar_t *m_Class ;
|
|
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
BOOL DeleteClass ( WbemProviderErrorObject &a_ErrorObject ) ;
|
|
|
|
public:
|
|
|
|
DeleteClassEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
BSTR a_Class ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~DeleteClassEventObject () ;
|
|
|
|
void Process () ;
|
|
} ;
|
|
|
|
class DeleteClassAsyncEventObject : public DeleteClassEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
|
|
public:
|
|
|
|
DeleteClassAsyncEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
BSTR a_Class ,
|
|
ULONG a_Flag ,
|
|
IWbemObjectSink *a_NotificationHandler ,
|
|
IWbemContext *pCtx
|
|
) ;
|
|
|
|
~DeleteClassAsyncEventObject () ;
|
|
} ;
|
|
|
|
class ExecMethodEventObject : public WbemTaskObject
|
|
{
|
|
private:
|
|
|
|
wchar_t *m_ObjectPath ;
|
|
wchar_t *m_MethodName ;
|
|
|
|
IWbemClassObject *m_InParameters ;
|
|
|
|
ParsedObjectPath *m_ParsedObjectPath ;
|
|
CObjectPathParser m_ObjectPathParser ;
|
|
|
|
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
BOOL ExecMethod ( WbemProviderErrorObject &a_ErrorObject ) ;
|
|
|
|
public:
|
|
|
|
ExecMethodEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
BSTR a_ObjectPath,
|
|
BSTR a_MethodName,
|
|
ULONG a_OperationFlag,
|
|
IWbemContext FAR *a_Ctx,
|
|
IWbemClassObject FAR *a_InParameters,
|
|
IWbemObjectSink FAR *a_NotificationHandler
|
|
) ;
|
|
|
|
~ExecMethodEventObject () ;
|
|
|
|
void Process () ;
|
|
} ;
|
|
|
|
class ExecMethodAsyncEventObject : public ExecMethodEventObject
|
|
{
|
|
private:
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
|
|
public:
|
|
|
|
ExecMethodAsyncEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
BSTR a_ObjectPath,
|
|
BSTR a_MethodName,
|
|
ULONG a_OperationFlag,
|
|
IWbemContext FAR *a_Ctx,
|
|
IWbemClassObject FAR *a_InParameters,
|
|
IWbemObjectSink FAR *a_NotificationHandler
|
|
) ;
|
|
|
|
~ExecMethodAsyncEventObject () ;
|
|
} ;
|
|
|
|
class EventAsyncEventObject : public WbemTaskObject
|
|
{
|
|
private:
|
|
protected:
|
|
protected:
|
|
|
|
void ProcessComplete () ;
|
|
void Process () ;
|
|
BOOL ProcessEvent ( WbemProviderErrorObject &a_ErrorObject ) ;
|
|
|
|
public:
|
|
|
|
EventAsyncEventObject (
|
|
|
|
CImpFrameworkProv *a_Provider ,
|
|
IWbemObjectSink* pSink,
|
|
long lFlags
|
|
) ;
|
|
|
|
~EventAsyncEventObject () ;
|
|
} ;
|