#ifndef __FOLDER_H #define __FOLDER_H #include <os/filesys.h> struct folderitem_ext_t : folderitem_t { folderitem_ext_t* next; void* data; IUnknown* mount; }; class CFolder : public IUnknown, public IFolder { public: CFolder(); ~CFolder(); STDMETHOD(QueryInterface)(REFIID iid, void ** ppvObject); IMPLEMENT_IUNKNOWN(CFolder); STDMETHOD(FindFirst)(const wchar_t* spec, folderitem_t* buf); STDMETHOD(FindNext)(folderitem_t* buf); STDMETHOD(FindClose)(folderitem_t* pBuf); STDMETHOD(Open)(folderitem_t* item, const wchar_t* params); STDMETHOD(Mount)(const wchar_t* name, IUnknown* obj); protected: folderitem_ext_t* m_item_first; bool m_scanned; virtual void ScanDir(); virtual IUnknown* DoOpen(folderitem_ext_t* buf); }; #endif