windows-nt/Source/XPSP1/NT/shell/ext/hnw/wizard/crawler.h
2020-09-26 16:20:57 +08:00

42 lines
867 B
C++

#ifndef _CRAWLER_H_
#define _CRAWLER_H_
#define CB_WNET_BUFFER 8*1024
typedef enum tagCrawlerFlags
{
NC_FINISHED = 0x0001,
NC_INIT_WORKGROUPS = 0x0002,
} NCFLAGS;
class CNetCrawler
{
public:
CNetCrawler(void) : _dwStatus(0), _hdpaWorkGroups(NULL), _cRef(1), _cItems(0) {}
~CNetCrawler(void);
void Init(DWORD dwFlags, int nItems);
HRESULT GetWorkGroupName(LPTSTR pszWorkGroupName, int cb, BOOL fBlocking);
inline void AddRef(void)
{
InterlockedIncrement(&_cRef);
}
inline void Release(void)
{
InterlockedDecrement(&_cRef);
if (!_cRef)
delete this;
}
private:
BOOL _dwStatus;
HDPA _hdpaWorkGroups;
int _iMaxItems;
int _cItems;
LONG _cRef;
void _EnumNetResources(LPNETRESOURCE pnr);
static DWORD WINAPI _EnumWorkGroups(LPVOID pv);
};
#endif // _CRAWLER_H_