WPPOBJ.H

/*------------------------------------------------*\ 
*
*Copyright (c) 1997 Microsoft Corporation
*
*Module Name:
*
*wppobj.h
*
*Abstract:
*
*Declaration of Service Provider object
*
\*------------------------------------------------*/


#ifndef __WPPOBJ_H__
#define __WPPOBJ_H__


#include "resource.h" // main symbols
#include "pages.h"

/////////////////////////////////////////////////////////////////////////////
// wpprov

class CWPProvider :
public CComDualImpl<IWPProvider, &IID_IWPProvider, &LIBID_CWPProviderLib>,
public ISupportErrorInfo,
public CComObjectRoot,
public CComCoClass<CWPProvider,&CLSID_CWPProvider>
{
public:
CWPProvider() {}
BEGIN_COM_MAP(CWPProvider)
COM_INTERFACE_ENTRY(IWPSiteW)
COM_INTERFACE_ENTRY(IWPProvider)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
//DECLARE_NOT_AGGREGATABLE(CWPProvider)
// Remove the comment from the line above if you don't want your object to
// support aggregation. The default is to support it

DECLARE_REGISTRY(CWPProvider, _T("WebPost.CWPProvider.1"), _T("WebPost.CWPProvider"), IDS_WPPROVIDER_DESC, THREADFLAGS_BOTH)
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);

// IWPProvider
public:

HRESULT STDMETHODCALLTYPE AddWizardPages(
/* [in] */ LONG __RPC_FAR *lpv,
/* [in] */ LONG __RPC_FAR *lpfnAdd,
/* [out][in] */ LONG __RPC_FAR *plParam);

HRESULT STDMETHODCALLTYPE Commit( void);

HRESULT STDMETHODCALLTYPE DeleteFile(
/* [string][in] */ LPCWSTR lpszFile);

HRESULT STDMETHODCALLTYPE FindClose(
/* [in] */ LONG hSearchHandle);

HRESULT STDMETHODCALLTYPE FindFirstFile(
/* [string][in] */ LPCWSTR lpszSearchFile,
/* [out] */ LPWIN32_FIND_DATAW lpFindFileData,
/* [out] */ LONG __RPC_FAR *lpSearchHandle);

HRESULT STDMETHODCALLTYPE FindNextFile(
/* [in] */ LONG hSearchHandle,
/* [out] */ LPWIN32_FIND_DATAW lpFindFileData);

HRESULT STDMETHODCALLTYPE GetError(
/* [out] */ LONG __RPC_FAR *lpdwErrorType,
/* [out] */ LONG __RPC_FAR *lpdwErrorCode,
/* [out][in] */ LONG __RPC_FAR *lpcbError,
/* [string][out] */ LPWSTR lpszError);

HRESULT STDMETHODCALLTYPE GetParam(
/* [string][in] */ LPCWSTR lpszParameter,
/* [out][in] */ LONG __RPC_FAR *lpcbValue,
/* [string][out] */ LPWSTR lpszValue);

HRESULT STDMETHODCALLTYPE GetSiteInfo(
/* [out] */ LPWPSITEINFOW lpbSite,
/* [out][in] */ LONG __RPC_FAR *lpcbSite);

HRESULT STDMETHODCALLTYPE NetworkConnect(
/* [string][in] */ LPCWSTR lpszUserName,
/* [string][in] */ LPCWSTR lpszPassword);

HRESULT STDMETHODCALLTYPE NetworkDisconnect( void);

HRESULT STDMETHODCALLTYPE PostFiles(
/* [in] */ LONG cLocalPaths,
/* [string][in] */ LPWSTR __RPC_FAR *lppszLocalPaths,
/* [out][in] */ LONG __RPC_FAR *lpcbURL,
/* [string][out][in] */ LPWSTR lpszURL,
/* [in] */ LONG fdwFlags);

HRESULT STDMETHODCALLTYPE ServerLogin(
/* [string][in] */ LPCWSTR lpszUserName,
/* [string][in] */ LPCWSTR lpszPassword);

HRESULT STDMETHODCALLTYPE ServerLogout( void);

HRESULT STDMETHODCALLTYPE SetParam(
/* [string][in] */ LPCWSTR lpszParameter,
/* [string][in] */ LPCWSTR lpszValue);

HRESULT STDMETHODCALLTYPE SetProgressUpdateProc(
/* [in] */ LONG __RPC_FAR *lpfnProgressUpdateProc);

//
//Property page related variables
//

PROPSHEETPAGEm_Pages[NUM_PAGES];
HPROPSHEETPAGEm_hPages[NUM_PAGES];
DWORDm_dwPageBeforeMe;
DWORDm_dwPageAfterMe;

//
//Non-IWPSite public methods
//

HRESULT Init(LPCWSTR wsSiteName, LPCWSTR wsDestURL);
HRESULT DoTestPost();

private:

//
//Object state
//

PFNPROGRESSUPDATEPROCm_pfnProgressUpdateProc;

};


#endif//__WPPOBJ_H__