150 lines
4.1 KiB
C++
150 lines
4.1 KiB
C++
|
/**********************************************************************/
|
||
|
/** Microsoft Windows/NT **/
|
||
|
/** Copyright(c) Microsoft Corporation, 1997-1999 **/
|
||
|
/**********************************************************************/
|
||
|
|
||
|
/*
|
||
|
node.cpp
|
||
|
Root node information (the root node is not displayed
|
||
|
in the MMC framework but contains information such as
|
||
|
all of the subnodes in this snapin).
|
||
|
|
||
|
FILE HISTORY:
|
||
|
|
||
|
*/
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "snmpclst.h"
|
||
|
#include "handler.h"
|
||
|
#include "util.h"
|
||
|
#include "statsdlg.h"
|
||
|
#include "modeless.h"
|
||
|
#include "snmppp.h"
|
||
|
|
||
|
|
||
|
extern CString g_strMachineName;
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
CSnmpRootHandler implementation
|
||
|
---------------------------------------------------------------------------*/
|
||
|
|
||
|
/*!--------------------------------------------------------------------------
|
||
|
CSnmpRootHandler::HasPropertyPages
|
||
|
Implementation of ITFSNodeHandler::HasPropertyPages
|
||
|
NOTE: the root node handler has to over-ride this function to
|
||
|
handle the snapin manager property page (wizard) case!!!
|
||
|
|
||
|
Author: KennT
|
||
|
---------------------------------------------------------------------------*/
|
||
|
STDMETHODIMP
|
||
|
CSnmpRootHandler::HasPropertyPages
|
||
|
(
|
||
|
ITFSNode * pNode,
|
||
|
LPDATAOBJECT pDataObject,
|
||
|
DATA_OBJECT_TYPES type,
|
||
|
DWORD dwType
|
||
|
)
|
||
|
{
|
||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
||
|
|
||
|
HRESULT hr = hrOK;
|
||
|
|
||
|
if (dwType & TFS_COMPDATA_CREATE)
|
||
|
{
|
||
|
// This is the case where we are asked to bring up property
|
||
|
// pages when the user is adding a new snapin. These calls
|
||
|
// are forwarded to the root node to handle.
|
||
|
hr = S_FALSE;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
// we have property pages in the normal case
|
||
|
hr = S_OK;
|
||
|
}
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
CSnmpRootHandler::CreatePropertyPages
|
||
|
Description
|
||
|
Author: EricDav
|
||
|
---------------------------------------------------------------------------*/
|
||
|
STDMETHODIMP
|
||
|
CSnmpRootHandler::CreatePropertyPages
|
||
|
(
|
||
|
ITFSNode *pNode,
|
||
|
LPPROPERTYSHEETCALLBACK lpProvider,
|
||
|
LPDATAOBJECT pDataObject,
|
||
|
LONG_PTR handle,
|
||
|
DWORD dwType
|
||
|
)
|
||
|
{
|
||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
||
|
|
||
|
HRESULT hr;
|
||
|
DWORD dwError;
|
||
|
CString strServiceName;
|
||
|
|
||
|
static UINT s_cfServiceName = RegisterClipboardFormat(L"FILEMGMT_SNAPIN_SERVICE_NAME");
|
||
|
static UINT s_cfMachineName = RegisterClipboardFormat(L"MMC_SNAPIN_MACHINE_NAME");
|
||
|
|
||
|
g_strMachineName.Empty();
|
||
|
|
||
|
hr = ::ExtractString( pDataObject,
|
||
|
(CLIPFORMAT) s_cfMachineName,
|
||
|
&g_strMachineName,
|
||
|
255 );
|
||
|
|
||
|
if (FAILED(hr))
|
||
|
return FALSE;
|
||
|
|
||
|
hr = ::ExtractString( pDataObject,
|
||
|
(CLIPFORMAT) s_cfServiceName,
|
||
|
&strServiceName,
|
||
|
255 );
|
||
|
|
||
|
if (FAILED(hr))
|
||
|
return FALSE;
|
||
|
|
||
|
if( !lstrcmpi(strServiceName, L"Snmp") ) {
|
||
|
|
||
|
SPIComponentData spComponentData;
|
||
|
m_spNodeMgr->GetComponentData(&spComponentData);
|
||
|
|
||
|
CAgentPage *pAgentPage = new CAgentPage();
|
||
|
|
||
|
// tell MMC to hook the proc because we are running on a separate,
|
||
|
// non MFC thread.
|
||
|
|
||
|
MMCPropPageCallback(&pAgentPage->m_psp);
|
||
|
|
||
|
HPROPSHEETPAGE hAgentPage = ::CreatePropertySheetPage(&pAgentPage->m_psp);
|
||
|
if(hAgentPage == NULL)
|
||
|
return E_UNEXPECTED;
|
||
|
|
||
|
lpProvider->AddPage(hAgentPage);
|
||
|
|
||
|
CTrapsPage *pTrapsPage = new CTrapsPage();
|
||
|
|
||
|
MMCPropPageCallback(&pTrapsPage->m_psp);
|
||
|
|
||
|
HPROPSHEETPAGE hTrapsPage = ::CreatePropertySheetPage(&pTrapsPage->m_psp);
|
||
|
if(hTrapsPage == NULL)
|
||
|
return E_UNEXPECTED;
|
||
|
|
||
|
lpProvider->AddPage(hTrapsPage);
|
||
|
|
||
|
CSecurityPage *pSecurityPage = new CSecurityPage();
|
||
|
|
||
|
MMCPropPageCallback(&pSecurityPage->m_psp);
|
||
|
|
||
|
HPROPSHEETPAGE hSecurityPage = ::CreatePropertySheetPage(&pSecurityPage->m_psp);
|
||
|
if(hSecurityPage == NULL)
|
||
|
return E_UNEXPECTED;
|
||
|
|
||
|
lpProvider->AddPage(hSecurityPage);
|
||
|
}
|
||
|
|
||
|
return hr;
|
||
|
}
|