Source code of Windows XP (NT5)
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

#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