Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

241 lines
6.0 KiB

#ifndef __DOMMIGRATOR_H_
#define __DOMMIGRATOR_H_
#include "resource.h"
#include <atlsnap.h>
#include "MyNodes.h"
#include <ntverp.h>
class CDomMigrator;
class CDomMigratorComponent : public CComObjectRootEx<CComSingleThreadModel>,
public CSnapInObjectRoot<2, CDomMigrator >,
public IExtendContextMenuImpl<CDomMigratorComponent>,
public IExtendControlbarImpl<CDomMigratorComponent>,
public IComponentImpl<CDomMigratorComponent>
{
public:
BEGIN_COM_MAP(CDomMigratorComponent)
COM_INTERFACE_ENTRY(IComponent)
COM_INTERFACE_ENTRY(IExtendContextMenu)
COM_INTERFACE_ENTRY(IExtendControlbar)
END_COM_MAP()
public:
CDomMigratorComponent()
{
}
STDMETHOD(Notify)(LPDATAOBJECT lpDataObject, MMC_NOTIFY_TYPE event, long arg, long param)
{
if (lpDataObject != NULL)
return IComponentImpl<CDomMigratorComponent>::Notify(lpDataObject, event, arg, param);
// TODO : Add code to handle notifications that set lpDataObject == NULL.
return E_NOTIMPL;
}
// IExtendContextMenu methods
STDMETHOD(AddMenuItems)(LPDATAOBJECT pDataObject,
LPCONTEXTMENUCALLBACK piCallback,
long *pInsertionAllowed);
STDMETHOD(Command)(long lCommandID,
LPDATAOBJECT pDataObject);
};
class CDomMigrator : public CComObjectRootEx<CComSingleThreadModel>,
public CSnapInObjectRoot<1, CDomMigrator>,
public IComponentDataImpl<CDomMigrator, CDomMigratorComponent>,
public IExtendContextMenuImpl<CDomMigrator>,
public IPersistStreamInit,
public ISnapinHelp2,
public CComCoClass<CDomMigrator, &CLSID_DomMigrator>
{
CString m_lpszSnapinHelpFile;
public:
CDomMigrator();
~CDomMigrator();
BEGIN_COM_MAP(CDomMigrator)
COM_INTERFACE_ENTRY(IComponentData)
COM_INTERFACE_ENTRY(IExtendContextMenu)
COM_INTERFACE_ENTRY(IPersistStreamInit)
COM_INTERFACE_ENTRY(ISnapinHelp)
COM_INTERFACE_ENTRY(ISnapinHelp2)
END_COM_MAP()
//DECLARE_REGISTRY_RESOURCEID(IDR_DOMMIGRATOR)
static HRESULT WINAPI UpdateRegistry( BOOL bUpdateRegistry )
{
WCHAR szBuf[MAX_PATH] = L"";
::LoadString(_Module.GetResourceInstance(), IDS_Title, szBuf, MAX_PATH);
_ATL_REGMAP_ENTRY regMap[] =
{
{ OLESTR("TOOLNAME"), SysAllocString(szBuf) },
{ 0, 0 }
};
return _Module.UpdateRegistryFromResourceD( IDR_DOMMIGRATOR, bUpdateRegistry, regMap );
}
DECLARE_NOT_AGGREGATABLE(CDomMigrator)
STDMETHOD(GetClassID)(CLSID *pClassID)
{
return S_OK;
ATLTRACENOTIMPL(_T("CDomMigrator::GetClassID"));
}
STDMETHOD(IsDirty)()
{
return S_FALSE;
ATLTRACENOTIMPL(_T("CDomMigrator::IsDirty"));
}
STDMETHOD(Load)(IStream *pStm)
{
return S_OK;
ATLTRACENOTIMPL(_T("CDomMigrator::Load"));
}
STDMETHOD(Save)(IStream *pStm, BOOL fClearDirty)
{
return S_OK;
ATLTRACENOTIMPL(_T("CDomMigrator::Save"));
}
STDMETHOD(GetSizeMax)(ULARGE_INTEGER *pcbSize)
{
return S_OK;
ATLTRACENOTIMPL(_T("CDomMigrator::GetSizeMax"));
}
STDMETHOD(InitNew)()
{
ATLTRACE(_T("CDomMigrator::InitNew\n"));
return S_OK;
}
STDMETHOD(Initialize)(LPUNKNOWN pUnknown);
static void WINAPI ObjectMain(bool bStarting)
{
if (bStarting)
CSnapInItem::Init();
}
// ISnapinHelp2 methods
STDMETHOD(GetHelpTopic)(LPOLESTR *lpCompiledHelpFile);
STDMETHOD(GetLinkedTopics)(LPOLESTR *lpCompiledHelpFiles);
};
class ATL_NO_VTABLE CDomMigratorAbout : public ISnapinAbout,
public CComObjectRoot,
public CComCoClass< CDomMigratorAbout, &CLSID_DomMigratorAbout>
{
public:
DECLARE_REGISTRY(CDomMigratorAbout, _T("DomMigratorAbout.1"), _T("DomMigratorAbout.1"), IDS_DOMMIGRATOR_DESC, THREADFLAGS_BOTH);
BEGIN_COM_MAP(CDomMigratorAbout)
COM_INTERFACE_ENTRY(ISnapinAbout)
END_COM_MAP()
STDMETHOD(GetSnapinDescription)(LPOLESTR *lpDescription)
{
USES_CONVERSION;
TCHAR szBuf[MAX_PATH];
if ( lpDescription == NULL )
return E_POINTER;
if (::LoadString(_Module.GetResourceInstance(), IDS_DOMMIGRATOR_DESC, szBuf, MAX_PATH) == 0)
return E_FAIL;
*lpDescription = (LPOLESTR)CoTaskMemAlloc((lstrlen(szBuf) + 1) * sizeof(OLECHAR));
if (*lpDescription == NULL)
return E_OUTOFMEMORY;
ocscpy(*lpDescription, T2OLE(szBuf));
return S_OK;
}
STDMETHOD(GetProvider)(LPOLESTR *lpName)
{
USES_CONVERSION;
TCHAR szBuf[MAX_PATH];
if ( lpName == NULL )
return E_POINTER;
if (::LoadString(_Module.GetResourceInstance(), IDS_DOMMIGRATOR_PROVIDER, szBuf, MAX_PATH) == 0)
return E_FAIL;
*lpName = (LPOLESTR)CoTaskMemAlloc((lstrlen(szBuf) + 1) * sizeof(OLECHAR));
if (*lpName == NULL)
return E_OUTOFMEMORY;
ocscpy(*lpName, T2OLE(szBuf));
return S_OK;
}
STDMETHOD(GetSnapinVersion)(LPOLESTR *lpVersion)
{
USES_CONVERSION;
TCHAR szFormat[MAX_PATH];
TCHAR szVersion[MAX_PATH];
if ( lpVersion == NULL )
return E_POINTER;
if (::LoadString(_Module.GetResourceInstance(), IDS_DOMMIGRATOR_VERSION, szFormat, MAX_PATH) == 0)
return E_FAIL;
szVersion[MAX_PATH - 1] = _T('\0');
int cch = _sntprintf(szVersion, MAX_PATH, szFormat, LVER_PRODUCTVERSION_STR);
if ((cch < 0) || (szVersion[MAX_PATH - 1] != _T('\0')))
{
return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
}
szVersion[MAX_PATH - 1] = _T('\0');
*lpVersion = (LPOLESTR)CoTaskMemAlloc((lstrlen(szVersion) + 1) * sizeof(OLECHAR));
if (*lpVersion == NULL)
return E_OUTOFMEMORY;
ocscpy(*lpVersion, T2OLE(szVersion));
return S_OK;
}
STDMETHOD(GetSnapinImage)(HICON *hAppIcon)
{
if ( hAppIcon == NULL )
return E_POINTER;
*hAppIcon = NULL;
return S_OK;
}
STDMETHOD(GetStaticFolderImage)(HBITMAP *hSmallImage,
HBITMAP *hSmallImageOpen,
HBITMAP *hLargeImage,
COLORREF *cMask)
{
if (( hSmallImage == NULL ) || ( hSmallImageOpen == NULL ) || ( hLargeImage == NULL ))
return E_POINTER;
*hSmallImageOpen = *hSmallImage = *hLargeImage = 0;
return S_OK;
}
};
#endif