|
|
//----------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 2000.
//
// File: cumicurs.hxx
//
// Contents: Header file for CUmiCursor, can be used with both IADsContainer
// and also for queries.
//
// History: 03-16-00 SivaramR Created (in WinNT).
// 03-28-00 AjayR modified for LDAP.
//
//----------------------------------------------------------------------------
#ifndef __CUMICURS_H__
#define __CUMICURS_H__
class CUmiCursor : INHERIT_TRACKING, public IUmiCursor { public:
//
// IUknown Support.
//
DECLARE_STD_REFCOUNTING STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID FAR* ppvObj) ;
//
// IUmiCursor Methods.
//
STDMETHOD (SetIID)( IN REFIID riid );
STDMETHOD (Reset)();
STDMETHOD (Next)( IN ULONG uNumRequested, OUT ULONG *puNumReturned, OUT LPVOID *ppObjects );
STDMETHOD (Count)( OUT ULONG *puNumObjects );
STDMETHOD (Previous)( IN ULONG uFlags, OUT LPVOID *pObj ); //
// IUmiBaseObject methods
//
STDMETHOD (GetLastStatus)( IN ULONG uFlags, OUT ULONG *puSpecificStatus, IN REFIID riid, OUT LPVOID *pStatusObj );
STDMETHOD (GetInterfacePropList)( IN ULONG uFlags, OUT IUmiPropList **pPropList );
//
// IUmiPropList Methods - none need to be implemented.
// There are only interface properties on cursors.
//
STDMETHODIMP Put( IN LPCWSTR pszName, IN ULONG uFlags, OUT UMI_PROPERTY_VALUES *pProp ) { SetLastStatus(0); RRETURN(E_NOTIMPL); }
STDMETHODIMP Get( IN LPCWSTR pszName, IN ULONG uFlags, OUT UMI_PROPERTY_VALUES **ppProp ) { SetLastStatus(0); RRETURN(E_NOTIMPL); }
STDMETHODIMP GetAs( IN LPCWSTR pszName, IN ULONG uFlags, IN ULONG uCoercionType, OUT UMI_PROPERTY_VALUES **ppProp ) { SetLastStatus(0); RRETURN(E_NOTIMPL); }
STDMETHODIMP FreeMemory( IN ULONG uReserved, IN LPVOID pMem ) { SetLastStatus(0); RRETURN(E_NOTIMPL); }
STDMETHODIMP GetAt( IN LPCWSTR pszName, IN ULONG uFlags, IN ULONG uBufferLength, OUT LPVOID pExistingMem ) { SetLastStatus(0); RRETURN(E_NOTIMPL); }
STDMETHODIMP GetProps( IN LPCWSTR *pszNames, IN ULONG uNameCount, IN ULONG uFlags, OUT UMI_PROPERTY_VALUES **pProps ) { SetLastStatus(0); RRETURN(E_NOTIMPL); }
STDMETHODIMP PutProps( IN LPCWSTR *pszNames, IN ULONG uNameCount, IN ULONG uFlags, OUT UMI_PROPERTY_VALUES *pProps ) { SetLastStatus(0); RRETURN(E_NOTIMPL); }
STDMETHODIMP PutFrom( IN LPCWSTR pszName, IN ULONG uFlags, IN ULONG uBufferLength, IN LPVOID pExistingMem ) { SetLastStatus(0); RRETURN(E_NOTIMPL); }
STDMETHODIMP Delete( IN LPCWSTR pszName, IN ULONG uFlags ) { SetLastStatus(0); RRETURN(E_NOTIMPL); }
CUmiCursor::CUmiCursor(); CUmiCursor::~CUmiCursor(); //
// For use with IADsContainer.
//
static HRESULT CUmiCursor::CreateCursor( IUnknown *pCont, REFIID iid, LPVOID *ppInterface );
//
// For use with a query -> IUmiQuery.
//
static HRESULT CUmiCursor::CreateCursor( IUmiQuery *pQuery, IUmiConnection *pConnection, IUnknown *pUnk, LPCWSTR pszADsPath, LPCWSTR pszLdapServer, LPCWSTR pszLdapDn, CCredentials cCredentials, DWORD dwPort, REFIID iid, LPVOID *ppInterface );
private:
void SetLastStatus(ULONG ulStatus); HRESULT GetFilter(VARIANT *pvFilter);
BOOL _fQuery; CPropertyManager *_pPropMgr; ULONG _ulErrorStatus; IID *_pIID; IADsContainer *_pContainer; IEnumVARIANT *_pEnum; CUmiSearchHelper *_pSearchHelper;
}; #endif // __CUMICURS_H__
|