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.
|
|
//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1996 - 1999.
//
// File: qsession.hxx
//
// Contents: Query Session. Implements ICiCQuerySession interface.
//
// Classes: CQuerySession
//
// History: 12-Dec-96 SitaramR Created
//
//----------------------------------------------------------------------------
#pragma once
#include <ciintf.h>
#include <catalog.hxx>
#include <seccache.hxx>
//+---------------------------------------------------------------------------
//
// Class: CQuerySession
//
// Purpose: Implements ICiCQuerySession interface
//
// History: 12-Dec-96 SitaramR Created
//
//----------------------------------------------------------------------------
class CQuerySession : INHERIT_VIRTUAL_UNWIND, public ICiCQuerySession { INLINE_UNWIND( CQuerySession )
public:
//
// From IUnknown
//
virtual SCODE STDMETHODCALLTYPE QueryInterface( REFIID riid, void **ppvObject );
virtual ULONG STDMETHODCALLTYPE AddRef();
virtual ULONG STDMETHODCALLTYPE Release();
//
// From ICiCQuerySession
//
virtual SCODE STDMETHODCALLTYPE Init( ULONG nProps, const FULLPROPSPEC *const *apPropSpec, IDBProperties *pDBProperties, ICiQueryPropertyMapper *pQueryPropertyMapper);
virtual SCODE STDMETHODCALLTYPE GetEnumOption( CI_ENUM_OPTIONS *pEnumOption);
virtual SCODE STDMETHODCALLTYPE CreatePropRetriever( ICiCPropRetriever **ppICiCPropRetriever);
virtual SCODE STDMETHODCALLTYPE CreateDeferredPropRetriever( ICiCDeferredPropRetriever **ppICiCDefPropRetriever);
virtual SCODE STDMETHODCALLTYPE CreateEnumerator( ICiCScopeEnumerator **ppICiCEnumerator);
//
// Local methods
//
CQuerySession( PCatalog& cat );
private:
virtual ~CQuerySession();
BOOL IsAnyScopeDeep() const;
void GetNormalizedScopes(WCHAR const * const *aScopes, ULONG const * aDepths, ULONG cScopes, ULONG cCatalogs, CDynArray<WCHAR> & aNormalizedScopes );
void CleanupScope( XArray<WCHAR> & xScope, DWORD dwDepth, WCHAR const * pwcScope );
inline BOOL IsVScope( DWORD dwDepth ) { return 0 != ( dwDepth & QUERY_VIRTUAL_PATH ); }
PCatalog& _cat; // Catalog
BOOL _fUsePathAlias; // Is client remote
XRestriction _xScope; // Scope
CSecurityCache _secCache; // Security check
CiMetaData _eType; // Enumeration type
XInterface<ICiQueryPropertyMapper> _xQueryPropMapper; // Propspec <-> pid
ULONG _cRefs; // Refcount
};
|