mirror of https://github.com/tongzx/nt5src
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.
68 lines
2.2 KiB
68 lines
2.2 KiB
#ifndef _MIGOOBE_H
|
|
#define _MIGOOBE_H
|
|
|
|
#include "cowsite.h"
|
|
|
|
class CMigWizEngine : public CObjectWithSite
|
|
,public IMigrationWizardAuto
|
|
{
|
|
public:
|
|
// Constructor
|
|
CMigWizEngine();
|
|
|
|
// Destructor
|
|
virtual ~CMigWizEngine();
|
|
|
|
// IUnknown
|
|
virtual STDMETHODIMP QueryInterface(const IID& iid, void** ppv);
|
|
virtual STDMETHODIMP_(ULONG) AddRef();
|
|
virtual STDMETHODIMP_(ULONG) Release();
|
|
|
|
|
|
protected:
|
|
// IMigrationWizardAuto
|
|
virtual STDMETHODIMP CreateToolDisk(BSTR pszDrivePath, BSTR pszFilesPath, BSTR pszManifestPath);
|
|
virtual STDMETHODIMP ApplySettings(BSTR pszStore);
|
|
virtual STDMETHODIMP Cancel();
|
|
|
|
// IDispatch
|
|
virtual STDMETHODIMP Invoke(DISPID dispidMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo, UINT * puArgErr);
|
|
virtual STDMETHODIMP GetTypeInfo(UINT itinfo, LCID lcid, ITypeInfo** pptinfo);
|
|
virtual STDMETHODIMP GetIDsOfNames(REFIID riid, OLECHAR **rgszNames, UINT cNames, LCID lcid, DISPID * rgdispid);
|
|
virtual STDMETHODIMP GetTypeInfoCount(UINT FAR* pctinfo);
|
|
|
|
protected:
|
|
// helpers
|
|
HRESULT _FireEvent(LPVOID lpParam, int iDISPID, DISPPARAMS* pdisp);
|
|
HRESULT _FireProgress(LPVOID lpParam, BSTR pszMsg, int iDone, int iTotal);
|
|
HRESULT _FireComplete(LPVOID lpParam, BSTR pszMsg);
|
|
|
|
HRESULT _GetIDispatchStream (IStream** ppStream);
|
|
|
|
HRESULT _CreateToolDiskThreadWorker();
|
|
static DWORD WINAPI _CreateToolDiskThread (LPVOID lpParam);
|
|
|
|
HRESULT _ApplySettingsThreadWorker();
|
|
static DWORD WINAPI _ApplySettingsThread (LPVOID lpParam);
|
|
|
|
|
|
private:
|
|
|
|
// Reference count
|
|
long m_cRef;
|
|
BOOL m_fUserApplying;
|
|
BOOL m_fInBackgroundThread; // only one background thread at a time, precludes more calls to CreateToolDisk, ApplySettings
|
|
|
|
// _CreateToolDiskThread, _ApplySettingsThread
|
|
BSTR m_pszDrivePath;
|
|
BSTR m_pszFilesPath;
|
|
BSTR m_pszManifestPath;
|
|
BOOL m_fCancelled;
|
|
IStream* m_pDispatchStream;
|
|
|
|
|
|
friend UINT ProgressCallback (LPVOID lpparam, UINT ui1, UINT ui2);
|
|
friend VOID WINAPI ApplyProgressCallback (MIG_PROGRESSPHASE Phase, MIG_PROGRESSSTATE State, UINT uiWorkDone, UINT uiTotalWork, ULONG_PTR pArg);
|
|
};
|
|
|
|
#endif
|