90 lines
3.4 KiB
C++
90 lines
3.4 KiB
C++
|
|
//***************************************************************************
|
|
//
|
|
// (c) 1999-2001 by Microsoft Corp. All Rights Reserved.
|
|
//
|
|
// eseitrtr.h
|
|
//
|
|
// cvadai 19-Mar-99 Created as prototype for Quasar.
|
|
//
|
|
//***************************************************************************
|
|
|
|
#ifndef _ESEIT_H_
|
|
#define _ESEIT_H_
|
|
|
|
#include <ese.h>
|
|
#include <wqltoese.h>
|
|
#include <eseutils.h>
|
|
|
|
#pragma warning( disable : 4251 ) // needs to have dll-interface to be used by clients of class
|
|
|
|
typedef enum
|
|
{
|
|
OPENTABLE_OBJECTMAP = 1,
|
|
OPENTABLE_INDEXNUMERIC = 2,
|
|
OPENTABLE_INDEXSTRING = 3,
|
|
OPENTABLE_INDEXREAL = 4,
|
|
OPENTABLE_INDEXREF = 5,
|
|
OPENTABLE_CONTAINEROBJS= 6,
|
|
OPENTABLE_REFPROPS = 7,
|
|
OPENTABLE_CLASSMAP = 8
|
|
} OPENTABLETYPE;
|
|
|
|
//***************************************************************************
|
|
// CWmiDbIterator
|
|
//***************************************************************************
|
|
|
|
class CWmiESEIterator : public IWmiDbIterator
|
|
{
|
|
friend class CWmiDbSession;
|
|
public:
|
|
HRESULT STDMETHODCALLTYPE QueryInterface(
|
|
/* [in] */ REFIID riid,
|
|
/* [iid_is][out] */ void __RPC_FAR *__RPC_FAR *ppvObject);
|
|
|
|
ULONG STDMETHODCALLTYPE AddRef( );
|
|
ULONG STDMETHODCALLTYPE Release( );
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE Cancel(
|
|
/* [in] */ DWORD dwFlags) ;
|
|
|
|
virtual HRESULT STDMETHODCALLTYPE NextBatch(
|
|
/* [in] */ DWORD dwNumRequested,
|
|
/* [in] */ DWORD dwTimeOutSeconds,
|
|
/* [in] */ DWORD dwFlags,
|
|
/* [in] */ DWORD dwRequestedHandleType,
|
|
/* [in] */ REFIID riid,
|
|
/* [out] */ DWORD __RPC_FAR *pdwNumReturned,
|
|
/* [length_is][size_is][out] */ LPVOID __RPC_FAR *ppObjects) ;
|
|
|
|
CWmiESEIterator();
|
|
~CWmiESEIterator();
|
|
|
|
protected:
|
|
BOOL PropMatch(CLASSDATA cd1, CLASSDATA cd2, ESEWQLToken *pTok);
|
|
BOOL Match (CLASSDATA cd, ESEToken *pTok);
|
|
BOOL SysMatch(SQL_ID dObjectId, SQL_ID dClassId, SQL_ID dScopeId, ESEToken *pTok);
|
|
HRESULT GetFirstMatch(SQL_ID &dObjectId, SQL_ID &dClassId, SQL_ID &dScopeId, LPWSTR *lpKey);
|
|
HRESULT GetNextMatch(SQL_ID &dObjectId, SQL_ID &dClassId, SQL_ID &dScopeId, LPWSTR * lpKey, BOOL bFirst = FALSE);
|
|
BOOL ObjectMatches (SQL_ID dObjectId, SQL_ID dClassId, SQL_ID dScopeId, INDEXDATA *pData = NULL,
|
|
REFERENCEPROPERTIES*pm=NULL, SQL_ID *pObjectId=NULL, SQL_ID *pClassId=NULL,SQL_ID *pScopeId=NULL);
|
|
BOOL ObjectMatchesWQL (SQL_ID dObjectId, SQL_ID dClassId, SQL_ID dScopeId);
|
|
BOOL ObjectMatchesClass (SQL_ID &dObjectId, SQL_ID &dClassId, SQL_ID &dScopeId, REFERENCEPROPERTIES *pm);
|
|
BOOL ObjectMatchesRef (SQL_ID &dObjectId, SQL_ID &dClassId, SQL_ID &dScopeId, INDEXDATA *pData);
|
|
HRESULT TestDriverStatus ();
|
|
|
|
ULONG m_uRefCount;
|
|
CWmiDbSession *m_pSession; // Pointer to our session
|
|
CSQLConnection *m_pConn; // SQL connection to our rowset
|
|
CESETokens *m_pToks;
|
|
DWORD m_dwOpenTable; // What did we prefilter on??
|
|
JET_TABLEID m_tableid; // the Index table in question
|
|
int m_iLastPos; // position of property to seek on
|
|
int m_iStartPos; // the first token of non-system criteria.
|
|
BOOL m_bFirst; // Have we started iterating yet?
|
|
BOOL m_bWQL;
|
|
BOOL m_bEnum; // We opened the whole table, so only scan once!
|
|
BOOL m_bClasses; // Classes only
|
|
};
|
|
|
|
#endif |