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.
209 lines
5.9 KiB
209 lines
5.9 KiB
/*++
|
|
|
|
Copyright (C) 2000-2001 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
Abstract:
|
|
|
|
History:
|
|
|
|
--*/
|
|
|
|
//***************************************************************************
|
|
//
|
|
// CREP.H
|
|
//
|
|
// Wrappers for repository drivers
|
|
//
|
|
// raymcc 27-Apr-00 WMI Repository init & mapping layer
|
|
//
|
|
//***************************************************************************
|
|
|
|
#ifndef _CREP_H_
|
|
#define _CREP_H_
|
|
|
|
|
|
class CRepository
|
|
{
|
|
static IWmiDbSession *m_pEseSession;
|
|
static IWmiDbHandle *m_pEseRoot;
|
|
static IWmiDbController *m_pEseController;
|
|
|
|
static HRESULT EnsureDefault();
|
|
static HRESULT UpgradeSystemClasses();
|
|
static HRESULT GetListOfRootSystemClasses(CWStringArray &aListRootSystemClasses);
|
|
static HRESULT RecursiveDeleteClassesFromNamespace(IWmiDbSession *pSession,
|
|
const wchar_t *wszNamespace,
|
|
CWStringArray &aListRootSystemClasses,
|
|
bool bDeleteInThisNamespace);
|
|
|
|
public:
|
|
static HRESULT GetObject(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN LPCWSTR pszObjectPath,
|
|
IN ULONG uFlags,
|
|
OUT IWbemClassObject **pObj
|
|
);
|
|
|
|
static HRESULT PutObject(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN REFIID riid,
|
|
IN LPVOID pObj,
|
|
IN DWORD dwFlags
|
|
);
|
|
|
|
static HRESULT DeleteObject(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN REFIID riid,
|
|
IN LPVOID pObj,
|
|
IN DWORD dwFlags
|
|
);
|
|
|
|
static HRESULT DeleteByPath(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN LPCWSTR pszPath,
|
|
IN DWORD uFlags
|
|
);
|
|
|
|
static HRESULT ExecQuery(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN LPCWSTR pszQuery,
|
|
IN IWbemObjectSink *pSink,
|
|
IN LONG lFlags
|
|
);
|
|
|
|
static HRESULT QueryClasses(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN ULONG uFlags, // WBEM_FLAG_DEEP = 0, WBEM_FLAG_SHALLOW = 1,
|
|
IN LPCWSTR pszSuperclass,
|
|
IN IWbemObjectSink *pSink
|
|
);
|
|
|
|
static HRESULT InheritsFrom(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN LPCWSTR pszSuperclass,
|
|
IN LPCWSTR pszSubclass
|
|
);
|
|
|
|
static HRESULT GetRefClasses(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN LPCWSTR pszClass,
|
|
IN BOOL bIncludeSubclasses,
|
|
OUT CWStringArray &aClasses
|
|
);
|
|
|
|
static HRESULT GetInstanceRefs(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN LPCWSTR pszTargetObject,
|
|
IN IWbemObjectSink *pSink
|
|
);
|
|
|
|
static HRESULT GetClassesWithRefs(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN IWbemObjectSink *pSink
|
|
);
|
|
// Gets all classes which have a [HasClassRefs] class qualifier
|
|
|
|
static HRESULT BuildClassHierarchy(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN LPCWSTR pBaseClassName,
|
|
IN LONG lFlags,
|
|
OUT wmilib::auto_ptr<CDynasty> & pDynasty // use operator delete
|
|
);
|
|
// WBEM_E_NOT_FOUND has special meaning; check lFlags too
|
|
|
|
static HRESULT FindKeyRoot(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN LPCWSTR wszClassName,
|
|
OUT IWbemClassObject** ppKeyRootClass
|
|
);
|
|
|
|
static HRESULT TableScanQuery(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN LPCWSTR pszClassName,
|
|
IN QL_LEVEL_1_RPN_EXPRESSION *pExp,
|
|
IN DWORD dwFlags,
|
|
IN IWbemObjectSink *pSink
|
|
);
|
|
|
|
// Setup, startup, init, etc.
|
|
// ==========================
|
|
|
|
static HRESULT InitDriver(
|
|
IN ULONG uFlags,
|
|
IN IWbemClassObject *pMappedNs,
|
|
OUT IWmiDbController **pResultController,
|
|
OUT IWmiDbSession **pResultRootSession,
|
|
OUT IWmiDbHandle **pResultVirtualRoot
|
|
);
|
|
|
|
static HRESULT OpenScope(
|
|
IN IWmiDbSession *pParentSession, //Parent session to use to
|
|
IN LPWSTR pszTargetScope, // NS or scope
|
|
IN GUID *pTransGuid, // Transaction GUID for connection
|
|
OUT IWmiDbController **pDriver, // Driver
|
|
OUT IWmiDbSession **pSession, // Session
|
|
OUT IWmiDbHandle **pScope, // Scope
|
|
OUT IWmiDbHandle **pNs // Nearest NS
|
|
);
|
|
|
|
static HRESULT EnsureNsSystemInstances(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN IWmiDbSession *pParentSession,
|
|
IN IWmiDbHandle *pParentNs
|
|
);
|
|
|
|
static HRESULT CRepository::EnsureNsSystemRootObjects(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN IWmiDbSession *pParentSession,
|
|
IN IWmiDbHandle *pParentNs
|
|
);
|
|
|
|
static HRESULT CRepository::EnsureNsSystemSecurityObjects(
|
|
IN IWmiDbSession *pSession,
|
|
IN IWmiDbHandle *pNs,
|
|
IN IWmiDbSession *pParentSession,
|
|
IN IWmiDbHandle *pParentNs
|
|
);
|
|
|
|
static HRESULT Init();
|
|
static HRESULT Shutdown(BOOL bIsSystemShutDown);
|
|
|
|
static HRESULT GetDefaultSession(
|
|
OUT IWmiDbSession **pSession
|
|
);
|
|
|
|
static HRESULT OpenEseNs(
|
|
IN IWmiDbSession *pSession,
|
|
IN LPCWSTR pszNamespace,
|
|
OUT IWmiDbHandle **pHandle
|
|
);
|
|
|
|
static HRESULT CreateEseNs(
|
|
IN IWmiDbSession *pSession,
|
|
IN LPCWSTR pszNamespace,
|
|
OUT IWmiDbHandle **pHandle
|
|
);
|
|
|
|
//Get a new session from the database that can hold transactioning states and anything else
|
|
//needed for a particular session
|
|
static HRESULT GetNewSession(OUT IWmiDbSession **ppSession);
|
|
};
|
|
|
|
#endif
|