|
|
//***************************************************************************
//
// NTEVTINST.H
//
// Module:
//
// Purpose: Genral purpose include file.
//
// Copyright (c) 1996-2001 Microsoft Corporation, All Rights Reserved
//
//***************************************************************************
#ifndef _NT_EVT_PROV_NTEVTINST_H
#define _NT_EVT_PROV_NTEVTINST_H
#define WBEM_CLASS_EXTENDEDSTATUS L"Win32_PrivilegesStatus"
#define WBEM_TASKSTATE_START 0x0
#define WBEM_TASKSTATE_ASYNCHRONOUSCOMPLETE 0x100000
#define WBEM_TASKSTATE_ASYNCHRONOUSABORT 0x100001
class WbemTaskObject { private: protected:
ULONG m_State ; WbemProvErrorObject m_ErrorObject ;
ULONG m_RequestHandle ; ULONG m_OperationFlag ; IWbemClassObject *m_ClassObject ; IWbemClassObject *m_AClassObject ; IWbemObjectSink *m_NotificationHandler ; IWbemContext *m_Ctx ; CImpNTEvtProv *m_Provider ;
protected:
void SetRequestHandle ( ULONG a_RequestHandle ) ; BOOL GetRequestHandle () ; BOOL GetExtendedNotifyStatusObject ( IWbemClassObject **a_NotifyObject ) ; BOOL GetNotifyStatusObject ( IWbemClassObject **a_NotifyObject ) ; BOOL GetClassObject ( BSTR a_Class ) ;
public:
static IWbemClassObject *g_ClassArray[NT_EVTLOG_MAX_CLASSES]; static BOOL GetClassObject ( BSTR a_Class, BOOL a_bAmended, IWbemServices *a_Server, IWbemContext *a_Ctx, IWbemClassObject **a_pClass ) ;
WbemTaskObject (
CImpNTEvtProv *a_Provider , IWbemObjectSink *a_NotificationHandler , ULONG a_OperationFlag , IWbemContext *a_Ctx ) ;
virtual void Process() {}
~WbemTaskObject () ;
WbemProvErrorObject &GetErrorObject () ;
} ;
class ExecQueryAsyncEventObject;
class GetObjectAsyncEventObject : public WbemTaskObject { friend ExecQueryAsyncEventObject; private:
wchar_t *m_ObjectPath ; wchar_t *m_Class ; ParsedObjectPath *m_ParsedObjectPath ; CObjectPathParser m_ObjectPathParser ; IWbemClassObject *m_Out; BOOL m_bIndicate;
BOOL Dispatch_Record ( WbemProvErrorObject &a_ErrorObject ); BOOL Get_Record ( WbemProvErrorObject &a_ErrorObject , KeyRef *a_FileKey , KeyRef *a_RecordKey ); BOOL Dispatch_EventLog ( WbemProvErrorObject &a_ErrorObject ); BOOL Get_EventLog ( WbemProvErrorObject &a_ErrorObject , KeyRef *a_FileKey); BOOL Dispatch_LogRecord ( WbemProvErrorObject &a_ErrorObject ) ; BOOL Dispatch_UserRecord ( WbemProvErrorObject &a_ErrorObject ) ; BOOL Dispatch_ComputerRecord ( WbemProvErrorObject &a_ErrorObject ) ; BOOL Get_LogRecord ( WbemProvErrorObject &a_ErrorObject , KeyRef *a_LogKey , KeyRef *a_RecordKey ) ; BOOL Get_UserRecord ( WbemProvErrorObject &a_ErrorObject , KeyRef *a_UserKey , KeyRef *a_RecordKey ) ; BOOL Get_ComputerRecord ( WbemProvErrorObject &a_ErrorObject , KeyRef *a_CompKey , KeyRef *a_RecordKey ) ;
protected:
BOOL GetObject ( WbemProvErrorObject &a_ErrorObject ) ;
public:
GetObjectAsyncEventObject (
CImpNTEvtProv *a_Provider , wchar_t *a_ObjectPath , ULONG a_Flag , IWbemObjectSink *a_NotificationHandler , IWbemContext *pCtx , BOOL a_bIndicate = TRUE ) ;
~GetObjectAsyncEventObject () ;
void Process () ; } ;
class ExecMethodAsyncEventObject : public WbemTaskObject { private:
wchar_t *m_ObjectPath ; wchar_t *m_Class ; wchar_t *m_Method ; ParsedObjectPath *m_ParsedObjectPath ; CObjectPathParser m_ObjectPathParser ; IWbemClassObject* m_InParamObject; BOOL m_bIndicateOutParam; IWbemClassObject* m_pOutClass;
BOOL Dispatch_EventLog ( WbemProvErrorObject &a_ErrorObject ); BOOL ExecMethod_EventLog ( WbemProvErrorObject &a_ErrorObject , KeyRef *a_FileKey);
protected:
BOOL ExecMethod ( WbemProvErrorObject &a_ErrorObject ) ;
public:
ExecMethodAsyncEventObject (
CImpNTEvtProv *a_Provider , wchar_t *a_ObjectPath , wchar_t *a_MethodName, ULONG a_Flag , IWbemClassObject *a_InParams , IWbemObjectSink *a_NotificationHandler , IWbemContext *pCtx ) ;
~ExecMethodAsyncEventObject () ;
void Process () ; } ;
class PutInstanceAsyncEventObject : public WbemTaskObject { private:
IWbemClassObject *m_InstObject ;
BOOL Dispatch_EventLog ( WbemProvErrorObject &a_ErrorObject );
protected:
BOOL PutInstance ( WbemProvErrorObject &a_ErrorObject ) ;
public:
PutInstanceAsyncEventObject (
CImpNTEvtProv *a_Provider , IWbemClassObject *a_Inst , ULONG a_Flag , IWbemObjectSink *a_NotificationHandler , IWbemContext *pCtx ) ;
~PutInstanceAsyncEventObject () ;
void Process () ; } ;
class ExecQueryAsyncEventObject : public WbemTaskObject, public QueryPreprocessor { private:
wchar_t *m_QueryFormat ; wchar_t *m_Query ; wchar_t *m_Class ;
SQL_LEVEL_1_RPN_EXPRESSION *m_RPNExpression ;
QueryPreprocessor::QuadState Compare(wchar_t *a_Operand1, wchar_t *a_Operand2, DWORD a_Operand1Func, DWORD a_Operand2Func, WmiTreeNode &a_OperatorType);
QueryPreprocessor::QuadState Compare(LONG a_Operand1, LONG a_Operand2 , DWORD a_Operand1Func, DWORD a_Operand2Func, WmiTreeNode &a_OperatorType);
QueryPreprocessor::QuadState CompareString(IWbemClassObject *a_ClassObject, BSTR a_PropertyName , WmiTreeNode *a_Operator, WmiTreeNode *a_Operand);
QueryPreprocessor::QuadState CompareInteger(IWbemClassObject *a_ClassObject, BSTR a_PropertyName, WmiTreeNode *a_Operator, WmiTreeNode *a_Operand);
QueryPreprocessor :: QuadState CompareDateTime (IWbemClassObject *a_ClassObject, BSTR a_PropertyName, WmiTreeNode *a_Operator, WmiTreeNode *a_Operand);
HRESULT GetRecordsBetweenTimes(WbemProvErrorObject &a_ErrorObject, LPCWSTR a_logname, BOOL a_Generated, DWORD a_dwUpper, DWORD a_dwLower);
HRESULT RecurseLogFile (WbemProvErrorObject &a_ErrorObject, PartitionSet *a_PartitionSet, LPCWSTR a_logname); HRESULT RecurseRecord (WbemProvErrorObject &a_ErrorObject, PartitionSet *a_PartitionSet, LPCWSTR a_logname); HRESULT DoAllInLogfile(WbemProvErrorObject &a_ErrorObject, LPCWSTR a_logname, DWORD a_dwUpper, DWORD a_dwLower); HRESULT RecurseTime(WbemProvErrorObject &a_ErrorObject, PartitionSet *a_PartitionSet, LPCWSTR a_logname, BOOL a_Generated); BOOL CheckTime( const BSTR a_wszText, BOOL &a_IsLow, BOOL &a_IsHigh );
protected:
BOOL ExecQuery ( WbemProvErrorObject &a_ErrorObject ) ; BOOL DispatchQuery ( WbemProvErrorObject &a_ErrorObject ) ; BOOL Query_Record ( WbemProvErrorObject &a_ErrorObject ) ; BOOL Query_EventLog ( WbemProvErrorObject &a_ErrorObject ) ; BOOL Query_LogRecord ( WbemProvErrorObject &a_ErrorObject ) ; BOOL Query_UserRecord ( WbemProvErrorObject &a_ErrorObject ) ; BOOL Query_ComputerRecord ( WbemProvErrorObject &a_ErrorObject ) ; BOOL OptimizeAssocQuery ( WbemProvErrorObject &a_ErrorObject , BSTR *a_ObjectPath); BOOL GenerateLogAssocs( WbemProvErrorObject &a_ErrorObject, const wchar_t* logPath, const wchar_t* logName, BOOL bVerifyLogname, BOOL *pbContinue = NULL); BOOL GenerateCompUserAssocs ( WbemProvErrorObject &a_ErrorObject, BOOL bComp ); wchar_t* GetClassFromPath(wchar_t* path);
// Query Processing Functions
//============================
QuadState InvariantEvaluate(void *a_Context, WmiTreeNode *a_Operator, WmiTreeNode *a_Operand); WmiRangeNode *AllocInfiniteRangeNode(void *a_Context, BSTR a_PropertyName); virtual DWORD GetPriority ( BSTR a_PropertyName ) ; WmiTreeNode *AllocTypeNode (void *a_Context, BSTR a_PropertyName, VARIANT &a_Variant, WmiValueNode::WmiValueFunction a_PropertyFunction, WmiValueNode :: WmiValueFunction a_ConstantFunction, WmiTreeNode *a_Parent);
public:
ExecQueryAsyncEventObject (
CImpNTEvtProv *a_Provider , BSTR a_QueryFormat , BSTR a_Query , ULONG a_Flag , IWbemObjectSink *a_NotificationHandler , IWbemContext *pCtx ) ;
~ExecQueryAsyncEventObject () ;
void Process () ; } ;
#endif //_NT_EVT_PROV_NTEVTINST_H
|