/*------------------------------------------------*\
*
*Copyright (c) 1997 Microsoft Corporation
*
*Module Name:
*
*wppobj.cpp
*
*Abstract:
*
*Implementation of Service Provider Object
*
\*------------------------------------------------*/
#include "stdafx.h"
#include "wpprov.h"
#include "wppobj.h"
#include "util.h"
#include "pages.h"
#include "resource.h"
extern HINSTANCE g_hInstance;
/////////////////////////////////////////////////////////////////////////////
//
STDMETHODIMP CWPProvider::InterfaceSupportsErrorInfo(REFIID riid)
{
static const IID* arr[] =
{
&IID_IWPProvider,
};
for (int i=0;i<sizeof(arr)/sizeof(arr[0]);i++)
{
if (InlineIsEqualGUID(*arr[i],riid))
return S_OK;
}
return S_FALSE;
}
HRESULT CWPProvider::Init(LPCWSTR wsSiteName, LPCWSTR wsDestURL)
{
HRESULThRetCode = NO_ERROR;
m_pfnProgressUpdateProc = NULL;
//
//TO DO:Add code here for initialization of Service Provider object
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT CWPProvider::DoTestPost(void)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO:Add code here to implement post using Service
//Provider protocol and retrieval using HTTP and
//destination URL for site
//
//This routine should fail if the Service Provider
//can't determine all the information it needs
//in order to do a test post
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::SetProgressUpdateProc(
/* [in] */ LONG __RPC_FAR *lpfnProgressUpdateProc)
{
HRESULThRetCode;
m_pfnProgressUpdateProc = (PFNPROGRESSUPDATEPROC) lpfnProgressUpdateProc;
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::AddWizardPages(
/* [in] */ LONG __RPC_FAR *lpv,
/* [in] */ LONG __RPC_FAR *lpfnAdd,
/* [out][in] */ LONG __RPC_FAR *plParam)
{
HRESULThRetCode = NO_ERROR;
DWORDi;
LPFNADDPROPSHEETPAGEpfnAdd = (LPFNADDPROPSHEETPAGE) lpfnAdd;
//
//Save IDs of pages immediately
//before and after ours
//
m_dwPageBeforeMe = HIWORD(*plParam);
m_dwPageAfterMe = LOWORD(*plParam);
//
//TO DO:Add code here if pages to add into wizard
//are determined dynamically
//
//
//Fill in property sheet structures
//
for (i = 0; i < NUM_PAGES; i++)
{
m_Pages[i].dwSize = sizeof(PROPSHEETPAGE);
m_Pages[i].dwFlags = PSP_DEFAULT;
m_Pages[i].hInstance = g_hInstance;
m_Pages[i].pszTemplate = MAKEINTRESOURCE(g_pPageInfo[i].uDlgID);
m_Pages[i].pszIcon = NULL;
m_Pages[i].pfnDlgProc = (DLGPROC) g_pPageInfo[i].DlgProc;
m_Pages[i].pszTitle = NULL;
m_Pages[i].lParam = (LPARAM) this;
m_hPages[i] = CreatePropertySheetPage(&m_Pages[i]);
if (NULL == m_hPages[i])
{
hRetCode = HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY);
goto leave_routine;
}
if ( FALSE == (pfnAdd(m_hPages[i], NULL)) )
{
DestroyPropertySheetPage(m_hPages[i]);
hRetCode = HRESULT_FROM_WIN32(ERROR_NOT_ENOUGH_MEMORY);
goto leave_routine;
}
}
//
//Return IDs of our first and last pages
//
*plParam = (IDD_FIRST_PAGE << 16) | IDD_LAST_PAGE;
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::Commit( void)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO:Write code here
//Call m_pfnProgressUpdateProc every time a chunk of bytes
//is sent (pass in filename and number of bytes committed)
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::DeleteFile(
/* [string][in] */ LPCWSTR lpszFile)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::FindClose(
/* [in] */ LONG hSearchHandle)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::FindFirstFile(
/* [string][in] */ LPCWSTR lpszSearchFile,
/* [out] */ LPWIN32_FIND_DATAW lpFindFileData,
/* [out] */ LONG __RPC_FAR *lpSearchHandle)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::FindNextFile(
/* [in] */ LONG hSearchHandle,
/* [out] */ LPWIN32_FIND_DATAW lpFindFileData)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::GetError(
/* [out] */ LONG __RPC_FAR *lpdwErrorType,
/* [out] */ LONG __RPC_FAR *lpdwErrorCode,
/* [out][in] */ LONG __RPC_FAR *lpcbError,
/* [string][out] */ LPWSTR lpszError)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::GetParam(
/* [string][in] */ LPCWSTR lpszParameter,
/* [out][in] */ LONG __RPC_FAR *lpcbValue,
/* [string][out] */ LPWSTR lpszValue)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::GetSiteInfo(
/* [out] */ LPWPSITEINFOW lpbSite,
/* [out][in] */ LONG __RPC_FAR *lpcbSite)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::NetworkConnect(
/* [string][in] */ LPCWSTR lpszUserName,
/* [string][in] */ LPCWSTR lpszPassword)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::NetworkDisconnect( void)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::PostFiles(
/* [in] */ LONG cLocalPaths,
/* [string][in] */ LPWSTR __RPC_FAR *lppszLocalPaths,
/* [out][in] */ LONG __RPC_FAR *lpcbURL,
/* [string][out][in] */ LPWSTR lpszURL,
/* [in] */ LONG fdwFlags)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO:Write code here
//Call m_pfnProgressUpdateProc every time a chunk of bytes
//is sent (pass in filename and number of bytes posted)
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::ServerLogin(
/* [string][in] */ LPCWSTR lpszUserName,
/* [string][in] */ LPCWSTR lpszPassword)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::ServerLogout( void)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}
HRESULT STDMETHODCALLTYPE CWPProvider::SetParam(
/* [string][in] */ LPCWSTR lpszParameter,
/* [string][in] */ LPCWSTR lpszValue)
{
HRESULThRetCode = NO_ERROR;
//
//TO DO: Write code here
//
leave(NO_ERROR);
leave_routine:
return(hRetCode);
}