/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 1998 **/ /**********************************************************************/ /* winsdb.h Wins database enumerator FILE HISTORY: Oct 13 1997 EricDav Modified */ #ifndef _WINDDB_H #define _WINSDB_H #include "wins.h" #ifndef _MEMMNGR_H #include "memmngr.h" #endif #ifndef _HARRAY_H #include "harray.h" #endif class CWinsDatabase : public IWinsDatabase { public: CWinsDatabase(); ~CWinsDatabase(); DeclareIUnknownMembers(IMPL) DeclareIWinsDatabaseMembers(IMPL) // helper to set the current state HRESULT SetCurrentState(WINSDB_STATE winsdbState); // for background threading DWORD Execute(); DWORD ReadRecords(handle_t hBinding); DWORD ReadRecordsByOwner(handle_t hBinding); // ?? int GetIndex(HROW hrow); HROW GetHRow(WinsRecord wRecord, BYTE bLast, BOOL fAllRecords); protected: // Holds all of the sorted and filtered indicies CIndexMgr m_IndexMgr; // handles memory allocation CMemoryManager m_cMemMan; // total number of records scanned DWORD m_dwRecsCount; LONG m_cRef; BOOL m_fFiltered; BOOL m_fInitialized; BOOL m_bShutdown; CString m_strName; CString m_strIp; HANDLE m_hThread; HANDLE m_hStart; HANDLE m_hAbort; HRESULT m_hrLastError; WINSDB_STATE m_DBState; handle_t m_hBinding; CCriticalSection m_csState; // CDWordArray m_dwaOwnerFilter; BOOL m_bEnableCache; DWORD m_dwOwner; LPSTR m_strPrefix; }; typedef ComSmartPointer SPIWinsDatabase; // thread proc the background thread initially is called on DWORD WINAPI ThreadProc(LPVOID lParam); // converts records from the server to WinsRecords void WinsIntfToWinsRecord(PWINSINTF_RECORD_ACTION_T pRecord, WinsRecord & wRecord); // helper to create and initialize the WinsDatabase extern HRESULT CreateWinsDatabase(CString& strName, CString& strIP, IWinsDatabase **ppWinsDB); #endif // _WINSDB_H