⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 warmmcnodeshares.cpp

📁 ftpserver very good sample
💻 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 + -