3/17/01 JosephJ Stuff to do 1. Define interfaces for async error reporting. 0. Make ConfigureAndBind take an out parameter which is a generation number. Sequence of steps: 1. Check for connectivity using ping 2. Do WMI operation 3. Verify result 1 hour: review code, make notes. Operation: Connect To Existing LeftView::OnWorldConnect ClusterConnectPage::ClusterConnectPage CommonNLB::connectToClusterIndirect MNLBMachine::getClusterProperties MwmiObject::getSpecificInstance WMI core APIs List of classes LeftView.h (exe):class LeftView : public CTreeView, public DataSinkI LeftView.cpp (exe):LeftView::LeftView() LeftView.cpp (exe):LeftView::~LeftView() LeftView.cpp (exe):LeftView::GetDocument() LeftView.cpp (exe):LeftView::OnInitialUpdate() LeftView.cpp (exe):LeftView::OnRButtonDown( UINT nFlags, CPoint point ) LeftView.cpp (exe):LeftView::OnWorldConnect() LeftView.cpp (exe):LeftView::OnWorldNewCluster() LeftView.cpp (exe):LeftView::OnClusterProperties() LeftView.cpp (exe):LeftView::OnClusterManageVIPS() LeftView.cpp (exe):LeftView::OnHostProperties() LeftView.cpp (exe):LeftView::OnClusterRemove() LeftView.cpp (exe):LeftView::OnClusterUnmanage() LeftView.cpp (exe):LeftView::OnClusterAddHost() LeftView.cpp (exe):LeftView::OnHostRemove() LeftView.cpp (exe):LeftView::OnClusterControl( UINT nID ) LeftView.cpp (exe):LeftView::OnClusterPortControl( UINT nID ) LeftView.cpp (exe):LeftView::OnHostControl( UINT nID ) LeftView.cpp (exe):LeftView::OnHostPortControl( UINT nID ) LeftView.cpp (exe):LeftView::dataSink( _bstr_t data ) LeftView.cpp (exe):LeftView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) LeftView.cpp (exe):LeftView::doesClusterExistInView( const _bstr_t& clusterToCheck ) Things should be greatly simplified: UtilityFunctions: PingHost HostInformation: Host.GetHostInformation(HostInfo) Machine name, dns name List of NICs and IPs bound to them Configuration operations: Host.GetClusterConfiguration(NIC-Guid, &Config) Host.SetClusterConfiguration(NIC-Guid, Params, &RequestId) --> Async return Host.GetAsyncResult(RequestId, &ResultCode, &ResultStrings); Management operations: Host.GetClusterState(NIC-Guid, &ClusterState) Host.SetClusterState(NIC-Guid, ClusterState) Command-line arguments: do -host: -nic: -config: -cmd: To Do: 1. Host.Host("connection information"); 2. Host.Ping(); 3. Host.Connect(); 3. Host.Disconnect(); 4. Host.GetHostInfo 4. Host.Get/SetClusterConfiguration() JosephJ 3/21/01 Search MSDN for "Idle Loop Processing" -- there is code there for adding MFC-compatible message processing while doing blocking operations. JosephJ 3/24/01 using namespace std, vectors. To use the template as is you need the statement: using namespace std;