📄 warmmcnodeshares.cpp
字号:
#include "StdAfx.h"#include "WarServerSnapin.h"#include "WarSvrSnapin.h"#include "WarMmcNodeShares.h"#include "PropPageFileSharePermissions.h"#include "PropPageFileShareUrl.h"#include "PropPageFileShareName.h"WarMmcNodeShares::WarMmcNodeShares(const war_registrypath_t& regNode): mDoEnumerate(true){ mRegKey.Create(HKEY_LOCAL_MACHINE, regNode);}/*** Destructor.*/WarMmcNodeShares::~WarMmcNodeShares(void) { FreeShares();}// OPERATORS// OPERATIONS void WarMmcNodeShares::FreeShares(){ while(!mShares.empty()) { WarMmcNodeFileShare *p = mShares.front(); mShares.erase(mShares.begin(), mShares.begin()); }}void WarMmcNodeShares::EnumerateChildren(){ // Enumerate shares FreeShares(); try { WarWin32Registry::keyname_list_t svr_list; mRegKey.EnumKey(svr_list); for(WarWin32Registry::keyname_list_t::const_iterator P = svr_list.begin() ; P != svr_list.end() ; P++) { WarWin32Registry reg_node; WarMmcNodeFileShare *pshare_info = new WarMmcNodeFileShare( mRegKey.GetPath(P->c_str())); mShares.push_back(pshare_info); } } catch(WarException& e) { CString msg; msg.Format(_T("Error enumerating shares\n%s"), WarCollector<TCHAR>(e.Explain()).GetValue().c_str()); AfxMessageBox(msg); } mDoEnumerate = false;}HRESULT WarMmcNodeShares::OnExpand(BOOL bExpand, IConsole *pConsole, HSCOPEITEM parent) { if (bExpand) { // Enumerate the defined shares CComQIPtr<IConsoleNameSpace, &IID_IConsoleNameSpace> spConsoleNameSpace(pConsole); if (mDoEnumerate) { while(true) { HSCOPEITEM hfirst_child; long cookie = 0; spConsoleNameSpace->GetChildItem(parent, &hfirst_child, &cookie); if (NULL == hfirst_child) break; spConsoleNameSpace->DeleteItem(hfirst_child, false); } EnumerateChildren(); } for(share_t::iterator P = mShares.begin() ; P != mShares.end() ; P++) { (*P)->m_scopeDataItem.relativeID = parent; HRESULT hr = spConsoleNameSpace->InsertItem(&(*P)->m_scopeDataItem); if (FAILED(hr)) return hr; } } return S_OK; }HRESULT WarMmcNodeShares::OnShow(IConsole *pConsole, BOOL bShow){ HRESULT hr = S_FALSE; if(bShow) { if (mDoEnumerate) EnumerateChildren(); CComQIPtr<IResultData, &IID_IResultData> spResultData(pConsole); CComQIPtr<IHeaderCtrl, &IID_IHeaderCtrl> spHeaderCtrl(pConsole); spResultData->SetDescBarText(OLESTR("Shared file systems")); spResultData->SetViewMode(MMCLV_VIEWSTYLE_REPORT); HRESULT hr = spResultData->DeleteAllRsltItems(); hr = spHeaderCtrl->InsertColumn( 0, _T("Mount point"), LVCFMT_LEFT, 200); hr = spHeaderCtrl->InsertColumn( 1, _T("URL"), LVCFMT_LEFT, 300); hr = spHeaderCtrl->InsertColumn( 2, _T("Properties"), LVCFMT_LEFT, 105); //MMCLV_AUTO); WarWin32Registry::keyname_list_t svr_list; return S_OK; for(share_t::iterator P = mShares.begin() ; P != mShares.end() ; P++) { HRESULT hr = spResultData->InsertItem(&(*P)->m_resultDataItem); if (FAILED(hr)) return hr; } } return S_OK;} HRESULT WarMmcNodeShares::InvokeNewWizzard(bool& bHandled, CSnapInObjectRootBase* pObj){ return InvokeWizzard(bHandled, pObj);} HRESULT WarMmcNodeShares::QueryPagesFor(DATA_OBJECT_TYPES type){ if (type == CCT_SCOPE) return S_OK; return S_FALSE;}HRESULT WarMmcNodeShares::CreatePropertyPages(LPPROPERTYSHEETCALLBACK lpProvider, long handle, IUnknown* pUnk, DATA_OBJECT_TYPES type){ if (type == CCT_SCOPE || type == CCT_RESULT) { // The second parameter to the property page class constructor // should be true for only one page. war_regstr_t my_name; // Empty warmmc_file_share_data_ptr_t my_data_ptr = new WarMmcFileNodeData(*this, my_name, mRegKey, true); { PropPageFileShareName* pPage = NULL; pPage = new PropPageFileShareName(my_data_ptr, handle, true, _T("Name")); HRESULT hr = lpProvider->AddPage(pPage->Create()); if(FAILED(hr)) return E_FAIL; } { PropPageFileShareUrl* pPage = NULL; pPage = new PropPageFileShareUrl(my_data_ptr, handle, false, _T("URL")); HRESULT hr = lpProvider->AddPage(pPage->Create()); if(FAILED(hr)) return E_FAIL; } { PropPageFileSharePermissions* pPage = new PropPageFileSharePermissions(my_data_ptr, handle, false, _T("Permissions")); HRESULT hr = lpProvider->AddPage(pPage->Create()); if(FAILED(hr)) return E_FAIL; } return S_OK; } return E_UNEXPECTED;}HRESULT WarMmcNodeShares::OnPropertyPageApplied(WarMmcFuckLameMicrosoftForNotImplementingThis *pfrom){ HRESULT hr; if (SUCCEEDED((hr = WarMmcNodeEventBase::OnPropertyPageApplied(pfrom)))) { // Reinitialize mDoEnumerate = true; // Get IConsole if (mpConsole) { IDataObject *pobject; if (SUCCEEDED(GetDataObject(&pobject, CCT_SCOPE))) mpConsole->UpdateAllViews(pobject, NULL, NULL); } } return hr;}HRESULT WarMmcNodeShares::OnChange(IConsole* pConsole, LPARAM data, LONG_PTR hint){ return S_FALSE;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -