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.
 
 
 
 
 
 

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