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.
 
 
 
 
 
 

99 lines
3.1 KiB

//+---------------------------------------------------------------------------
//
// 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
};