ftpeidl.h
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 3k
Category:

Windows Kernel

Development Platform:

Visual C++

  1. /*****************************************************************************
  2.  * ftpeidl.h
  3.  *****************************************************************************/
  4. #ifndef _FTPEIDL_H
  5. #define _FTPEIDL_H
  6. #include "cowsite.h"
  7. /*****************************************************************************
  8.  *
  9.  * CFtpEidl
  10.  *
  11.  * The stuff that tracks the state of an enumeration.
  12.  *
  13.  *****************************************************************************/
  14. class CFtpEidl          : public IEnumIDList
  15.                         , public CObjectWithSite
  16. {
  17. public:
  18.     //////////////////////////////////////////////////////
  19.     // Public Interfaces
  20.     //////////////////////////////////////////////////////
  21.     
  22.     // *** IUnknown ***
  23.     virtual STDMETHODIMP_(ULONG) AddRef(void);
  24.     virtual STDMETHODIMP_(ULONG) Release(void);
  25.     virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
  26.     
  27.     // *** IEnumIDList ***
  28.     virtual STDMETHODIMP Next(ULONG celt, LPITEMIDLIST *rgelt, ULONG *pceltFetched);
  29.     virtual STDMETHODIMP Skip(ULONG celt);
  30.     virtual STDMETHODIMP Reset(void);
  31.     virtual STDMETHODIMP Clone(IEnumIDList **ppenum);
  32. public:
  33.     CFtpEidl();
  34.     ~CFtpEidl(void);
  35.     // Friend Functions
  36.     friend HRESULT CFtpEidl_Create(CFtpDir * pfd, CFtpFolder * pff, HWND hwndOwner, DWORD shcontf, IEnumIDList ** ppenum);
  37. protected:
  38.     // Private Member Variables
  39.     int                     m_cRef;
  40.     BITBOOL                 m_fInited : 1;      // Have we been inited?
  41.     BITBOOL                 m_fDead : 1;        // Is this enumerator dead because we had to do a redirect (because password was needed or was invalid).
  42.     BITBOOL                 m_fErrorDisplayed : 1; // Only show one error per enum.  This is how we keep track.
  43.     DWORD                   m_nIndex;           // Current Item in the list
  44.     DWORD                   m_shcontf;          // Filter flags
  45.     CFtpPidlList *          m_pflHfpl;          // Where the cache lives
  46.     CFtpDir *               m_pfd;              // My FtpDir
  47.     CFtpFolder *            m_pff;              // My FtpDir
  48.     IMalloc *               m_pm;               // Today's itemid allocator
  49.     HWND                    m_hwndOwner;        // My UI window
  50.     HRESULT                 m_hrOleInited;      // We need to Init Ole because of Win95's Shell32 doesn't do that on the background enum thread.
  51. // BUGBUG -- someday  int m_cHiddenFiles;
  52.     // Public Member Functions
  53.     BOOL _fFilter(DWORD shcontf, DWORD dwFAFLFlags);
  54.     HRESULT _Init(void);
  55.     LPITEMIDLIST _NextOne(DWORD * pdwIndex);
  56.     HRESULT _PopulateItem(HINTERNET hint0, HINTPROCINFO * phpi);
  57.     HRESULT _AddFindDataToPidlList(LPCITEMIDLIST pidl);
  58.     HRESULT _HandleSoftLinks(HINTERNET hint, LPITEMIDLIST pidl, LPWIRESTR pwCurrentDir, DWORD cchSize);
  59.     BOOL _IsNavigationItem(LPWIN32_FIND_DATA pwfd);
  60.     static HRESULT _PopulateItemCB(HINTERNET hint0, HINTPROCINFO * phpi, LPVOID pvCFtpEidl, BOOL * pfReleaseHint) {return ((CFtpEidl *)pvCFtpEidl)->_PopulateItem(hint0, phpi);};
  61.     
  62.     // Friend Functions
  63.     friend HRESULT CFtpEidl_Create(CFtpDir * pfd, CFtpFolder * pff, HWND hwndOwner, DWORD shcontf, CFtpEidl ** ppfe);
  64.     friend HRESULT CFtpEidl_Create(CFtpDir * pfd, CFtpFolder * pff, HWND hwndOwner, DWORD shcontf, DWORD dwIndex, IEnumIDList ** ppenum);
  65. };
  66. #endif // _FTPEIDL_H