100 lines
3.1 KiB
C++
100 lines
3.1 KiB
C++
|
//+---------------------------------------------------------------------------
|
||
|
//
|
||
|
// 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
|
||
|
};
|
||
|
|