Source code of Windows XP (NT5)
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.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
pusher.h
Abstract:
This file contains the definition of the CPusher class. This class contains the logic for pushing schema to the repository.
Author:
Mohit Srivastava 28-Nov-00
Revision History:
--*/
#ifndef _pusher_h_
#define _pusher_h_
#include "schemaextensions.h"
//
// Property Names
//
static LPCWSTR g_wszProp_Class = L"__CLASS"; static LPCWSTR g_wszProp_Name = L"Name";
//
// Property Qualifier Names
//
static LPCWSTR g_wszPq_Key = L"Key"; static LPCWSTR g_wszPq_CimType = L"CIMTYPE"; static LPCWSTR g_wszPq_Read = L"Read"; static LPCWSTR g_wszPq_Write = L"Write";
//
// Class Qualifier Names
//
static LPCWSTR g_wszCq_Provider = L"provider"; static LPCWSTR g_wszCq_Dynamic = L"dynamic"; static LPCWSTR g_wszCq_Extended = L"extended"; static LPCWSTR g_wszCq_SchemaTS = L"MbSchemaTimeStamp";
//
// Method Qualifier Names
//
static LPCWSTR g_wszMq_Implemented = L"Implemented";
//
// Class Qualifier Values
//
static LPCWSTR g_wszCqv_Provider = L"IIS__PROVIDER";
class CPusher { public: CPusher() : m_pNamespace(NULL), m_pCtx(NULL), m_bInitCalled(false), m_bInitSuccessful(false) { }
virtual ~CPusher();
HRESULT Initialize( CWbemServices* i_pNamespace, IWbemContext* i_pCtx);
HRESULT Push( const CSchemaExtensions* i_pCatalog, CHashTable<WMI_CLASS *>* i_phashClasses, CHashTable<WMI_ASSOCIATION*>* i_phashAssocs);
private: //
// These are called by Push.
//
HRESULT RepositoryInSync( const CSchemaExtensions* i_pCatalog, bool* io_pbInSync);
HRESULT PushClasses( CHashTable<WMI_CLASS *>* i_phashTable);
HRESULT PushAssocs( CHashTable<WMI_ASSOCIATION *>* i_phashTable);
HRESULT SetTimeStamp( const CSchemaExtensions* i_pCatalog);
//
// Called by PushClasses and PushAssocs
//
HRESULT DeleteChildren( LPCWSTR i_wszExtSuperClass);
bool NeedToDeleteAssoc( IWbemClassObject* i_pObj) const;
HRESULT GetObject( LPCWSTR i_wszClass, IWbemClassObject** o_ppObj);
HRESULT SetClassInfo( IWbemClassObject* i_pObj, LPCWSTR i_wszClassName, ULONG i_iShipped);
//
// Called by PushClasses
//
HRESULT PrepareForPutClass( const WMI_CLASS* i_pElement, bool* io_pbPutNeeded);
HRESULT SetProperties( const WMI_CLASS* i_pElement, IWbemClassObject* i_pObject) const;
HRESULT SetMethods( const WMI_CLASS* i_pElement, IWbemClassObject* i_pObject) const;
//
// Called by PushAssocs
//
HRESULT SetAssociationComponent( IWbemClassObject* i_pObject, LPCWSTR i_wszComp, LPCWSTR i_wszClass) const;
CWbemServices* m_pNamespace; IWbemContext* m_pCtx;
//
// These are base classes that are opened in "Initialize" to
// prevent repeated WMI calls to m_pNamespace->GetObject().
//
CComPtr<IWbemClassObject> m_spBaseElementObject; CComPtr<IWbemClassObject> m_spBaseSettingObject; CComPtr<IWbemClassObject> m_spBaseElementSettingObject; CComPtr<IWbemClassObject> m_spBaseGroupPartObject;
//
// Class qualifier name/value pairs
// Used in PushClasses and PushAssocs
//
LPCWSTR m_awszClassQualNames[2]; CComVariant m_avtClassQualValues[2];
bool m_bInitCalled; bool m_bInitSuccessful; };
#endif // _pusher_h_
|