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

📄 warmmcnodefileshare.cpp

📁 ftpserver very good sample
💻 CPP
字号:
#include "StdAfx.h"#include "WarServerSnapin.h"#include "WarSvrSnapin.h"#include "WarMmcNodeFileShare.h"#include "PropPageFileSharePermissions.h"#include "PropPageFileShareUrl.h"WarMmcNodeFileShare::WarMmcNodeFileShare(const war_registrypath_t& regNode){    mRegKey.Create(HKEY_LOCAL_MACHINE, regNode);    const TCHAR *p = regNode.GetPath();    const TCHAR *node_name = p;    while(*p)    {        if (*p == '\\')            node_name = ++p;        else            ++p;    }        m_bstrDisplayName = node_name;        ReloadMyProperties();        memset(&m_resultDataItem, 0, sizeof(m_resultDataItem));        m_resultDataItem.mask = RDI_STR | RDI_IMAGE | RDI_PARAM;    m_resultDataItem.str = MMC_CALLBACK;    m_resultDataItem.nImage = WAR_IL_SHARED_FOLDER;    m_resultDataItem.lParam = (LPARAM) this;        memset(&m_scopeDataItem, 0, sizeof(m_scopeDataItem));    m_scopeDataItem.mask = SDI_STR | SDI_PARAM | SDI_IMAGE | SDI_OPENIMAGE | SDI_PARENT;    m_scopeDataItem.displayname = MMC_CALLBACK;    m_scopeDataItem.nImage = WAR_IL_SHARED_FOLDER;    m_scopeDataItem.nOpenImage = WAR_IL_SHARED_FOLDER_OPEN;    m_scopeDataItem.lParam = (LPARAM)this;}HRESULT WarMmcNodeFileShare::OnSelect(IConsole *spConsole,                                       IComponent* pComponent){    IConsoleVerb *pConsoleVerb;    HRESULT hr = spConsole->QueryConsoleVerb(&pConsoleVerb);    _ASSERT(SUCCEEDED(hr));    hr = pConsoleVerb->SetVerbState(MMC_VERB_RENAME, ENABLED, TRUE);    _ASSERT(SUCCEEDED(hr));    hr = pConsoleVerb->SetVerbState(MMC_VERB_PROPERTIES, ENABLED, TRUE);    _ASSERT(SUCCEEDED(hr));    pConsoleVerb->Release();        return S_OK;}HRESULT WarMmcNodeFileShare::QueryPagesFor(DATA_OBJECT_TYPES type){    if (type == CCT_SCOPE || type == CCT_RESULT)        return S_OK;    return S_FALSE;}HRESULT WarMmcNodeFileShare::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 = m_bstrDisplayName;        WarWin32Registry parent_reg;        parent_reg.Open(mRegKey.GetRootKey(),             mRegKey.GetPath().GetPathname());        warmmc_file_share_data_ptr_t my_data_ptr =             new WarMmcFileNodeData(*this, my_name, parent_reg);                my_data_ptr->Load();                {            PropPageFileShareUrl* pPage = NULL;            pPage = new PropPageFileShareUrl(my_data_ptr, handle, true, _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 WarMmcNodeFileShare::OnExpand(BOOL bExpand,                                       IConsole *pConsole,                                       HSCOPEITEM parent) {       // Enumerate the defined shares    return S_OK; }void WarMmcNodeFileShare::ReloadMyProperties(){    std::string tmp_url;    mUrl = WarUrl::Decode(tmp_url, mRegKey.GetStrValue(WAR_WINNT_SHARE_URL, NULL, true).c_str()).c_str();    mPermissions = mRegKey.GetIntValue(WAR_WINNT_REG_PERMISSIONS, 0, true);}LPOLESTR WarMmcNodeFileShare::GetResultPaneColInfo(int nCol){    switch (nCol)    {    case 0:        return m_bstrDisplayName;    case 1:        return mUrl;    case 2:        UpdateVisualPerms();        return mVisualPermissions;    }    return OLESTR("Override GetResultPaneColInfo");}HRESULT WarMmcNodeFileShare::OnShow(IConsole *pConsole, BOOL bShow){    return S_FALSE;}void WarMmcNodeFileShare::UpdateVisualPerms(){    static const char perm_flags[] =     {        'r', // ALLOW_READ        'w', // ALLOW_WRITE        'a', // ALLOW_APPEND        'x', // ALLOW_EXEC        'L', // ALLOW_LIST        'd', // ALLOW_DELETE        'X', // ALLOW_CWD        's', // ALLOW_SYMLINK        'h', // HIDE_OTHERS        'H', // HIDE_ALL        'R', // RECURSIVE        'D', // DENY_ALL        'T', // SYMLINK_TREE        'A' // SYMLINK_ALL    };        char flags[sizeof(perm_flags)+1];    int pos = 0;    for(int index = 0        ; index < sizeof(perm_flags)        ; index++)    {        if (((1 << index) & mPermissions) != 0)            flags[pos++] = perm_flags[index];    }    flags[pos] = 0;    mVisualPermissions = flags;}HRESULT WarMmcNodeFileShare::OnPropertyPageApplied(    WarMmcFuckLameMicrosoftForNotImplementingThis *pfrom){    HRESULT hr = WarMmcNodeEventBase::OnPropertyPageApplied(pfrom);    ReloadMyProperties();    return hr;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -