CENUMOBJ.H
/*++ 
 
Copyright (c) 1996 Microsoft Corporation 
 
Module Name: 
 
    CEnumObj.h 
 
Abstract: 
 
Author: 
 
Environment: 
 
    User mode 
 
Revision History : 
 
--*/ 
#ifndef _CENUMOBJ_H_ 
#define _CENUMOBJ_H_ 
 
class FAR CSampleDSGenObjectEnum : public CSampleDSEnumVariant 
{ 
public: 
    CSampleDSGenObjectEnum(ObjectTypeList ObjList); 
    CSampleDSGenObjectEnum(); 
    ~CSampleDSGenObjectEnum(); 
 
    HRESULT 
    EnumObjects( 
        ULONG cElements, 
        VARIANT FAR * pvar, 
        ULONG FAR * pcElementFetched 
        ); 
 
    static 
    HRESULT 
    CSampleDSGenObjectEnum::Create( 
        CSampleDSGenObjectEnum FAR* FAR* ppenumvariant, 
        BSTR ADsPath, 
        VARIANT var 
        ); 
 
private: 
 
        HRESULT 
        CSampleDSGenObjectEnum::FetchObjects( 
            ULONG cElements, 
                VARIANT FAR* pvar, 
                ULONG FAR* pcElementFetched 
                ); 
 
        HRESULT 
        CSampleDSGenObjectEnum::FetchNextObject( 
                IDispatch ** ppDispatch 
                ); 
         
    ObjectTypeList FAR *_pObjList; 
    LPDS_FILTER_LIST _pDSFilterList; 
 
    HANDLE      _hObject; 
    HANDLE      _hEnum; 
    LPDS_OBJECT_INFO _lpObjects; 
    DWORD       _dwObjectReturned; 
    DWORD       _dwObjectCurrentEntry; 
    DWORD       _dwObjectTotal; 
 
    BSTR        _ADsPath; 
 
    BOOL        _bNoMore; 
 
    HRESULT 
    CSampleDSGenObjectEnum::GetGenObject( 
        IDispatch ** ppDispatch 
        ); 
 
    HRESULT 
    EnumGenericObjects( 
        ULONG cElements, 
        VARIANT FAR* pvar, 
        ULONG FAR* pcElementFetched 
        ); 
 
 
    HRESULT 
    CSampleDSGenObjectEnum::EnumObjects( 
        DWORD ObjectType, 
        ULONG cElements, 
        VARIANT FAR * pvar, 
        ULONG FAR * pcElementFetched 
        ); 
 
    STDMETHOD(Next)( 
        ULONG cElements, 
        VARIANT FAR* pvar, 
        ULONG FAR* pcElementFetched 
        ); 
 
        HRESULT 
        CSampleDSGenObjectEnum::IsValidDSFilter( 
                LPWSTR lpObjectClass 
                ); 
 
}; 
 
HRESULT 
BuildDSFilterArray( 
    VARIANT var, 
    LPBYTE * ppContigFilter 
    ); 
 
void 
FreeFilterList( 
    LPBYTE lpContigFilter 
    ); 
 
LPBYTE 
CreateAndAppendFilterEntry( 
    LPBYTE pContigFilter, 
    LPWSTR lpObjectClass 
    ); 
#endif