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.
 
 
 
 
 
 

135 lines
4.5 KiB

//
// S F N O B J . H
//
// Declaration of CSFNCfg and helper functions
//
#pragma once
#include <ncxbase.h>
#include <ncatlps.h>
#include <nceh.h>
#include <notifval.h>
#include "resource.h"
EXTERN_C const CLSID CLSID_CSfnCfg;
//---[ Typedefs for FPNWCFG functions ]----------------------------------------
//
// Typedefs for the functions that we'll GetProcAddress from the
// NetWare config DLL. We'll use VOID * for the RUNNCPDLG/COMMITNCPDLG because:
// 1: We don't want to muck with the data ourselves. This makes
// that a tad easier to enforce.
// 2: Bringing in an NCP_INFO structure involves a
// ridiculous amount of header inclusion, including BLT
// stuff that we should really avoid.
typedef BOOL (PASCAL *FPNWCFG_RUNNCPDLG_PROC)(HWND, BOOL, VOID **, BOOL *);
typedef BOOL (PASCAL *FPNWCFG_COMMITNCPDLG_PROC)(HWND, BOOL, VOID *);
typedef BOOL (PASCAL *FPNWCFG_REMOVENCPSERVER_PROC)(HWND);
typedef BOOL (PASCAL *FPNWCFG_ISSPOOLERRUNNING_PROC)();
//---[ Constants ]-------------------------------------------------------------
const INT c_iMaxNetWareServerName = 47;
const INT c_iMaxNetWarePassword = 127;
const WCHAR c_dwDefaultTuning = 3;
//---[ SFNCfg ]----------------------------------------------------------------
class ATL_NO_VTABLE CSFNCfg :
public CComObjectRoot,
public CComCoClass<CSFNCfg, &CLSID_CSfnCfg>,
public INetCfgComponentSetup,
public INetCfgComponentControl
{
public:
CSFNCfg();
~CSFNCfg();
BEGIN_COM_MAP(CSFNCfg)
COM_INTERFACE_ENTRY(INetCfgComponentControl)
COM_INTERFACE_ENTRY(INetCfgComponentSetup)
END_COM_MAP()
// DECLARE_NOT_AGGREGATABLE(CSFNCfg)
// 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(CSFNCfg,
L"Microsoft.SFNCfg.1",
L"Microsoft.SFNCfg",
IDS_DESC_COMOBJ_SFNCFG, THREADFLAGS_BOTH)
// INetCfgComponentControl
STDMETHOD (Initialize) (
IN INetCfgComponent* pIComp,
IN INetCfg* pINetCfg,
IN BOOL fInstalling);
STDMETHOD (ApplyRegistryChanges) ();
STDMETHOD (ApplyPnpChanges) (
IN INetCfgPnpReconfigCallback* pICallback) { return S_OK; }
STDMETHOD (CancelChanges) ();
STDMETHOD (Validate) ();
// INetCfgComponentSetup
STDMETHOD (ReadAnswerFile) (PCWSTR pszAnswerFile,
PCWSTR pszAnswerSection);
STDMETHOD (Upgrade) (DWORD dwSetupFlags,
DWORD dwUpgradeFromBuildNo);
STDMETHOD (Install) (DWORD);
STDMETHOD (Removing) ();
public:
// Helper functions.
HRESULT HrCodeFromOldINF();
// Load and free the config DLL
HRESULT HrLoadConfigDLL();
VOID FreeConfigDLL();
// FPNW UI parameters.
DWORD m_dwTuning;
WCHAR m_szSysVol[MAX_PATH+1];
WCHAR m_szFPNWServerName[c_iMaxNetWareServerName+1];
WCHAR m_szPassword[c_iMaxNetWarePassword+1];
// Private state info
private:
// Install Action (Unknown, Install, Remove)
enum INSTALLACTION {eActUnknown, eActInstall, eActRemove};
INSTALLACTION m_eInstallAction;
HINSTANCE m_hlibConfig; // From LoadLibrary call.
INetCfgComponent * m_pncc; // Place to keep my component
INetCfg * m_pnc; // Place to keep the Netcfg object
VOID * m_pNcpInfoHandle; // Handle to opaque data struct from fpnwcfg
BOOL m_fDirty;
BOOL m_fAlreadyInstalled; // TRUE if component is already installed
FPNWCFG_ISSPOOLERRUNNING_PROC m_pfnIsSpoolerRunning;
FPNWCFG_RUNNCPDLG_PROC m_pfnRunNcpDlg;
FPNWCFG_REMOVENCPSERVER_PROC m_pfnRemoveNcpServer;
FPNWCFG_COMMITNCPDLG_PROC m_pfnCommitNcpDlg;
// number of property sheet pages
enum PAGES
{
c_cPages = 2
};
// Generic dialog data
CPropSheetPage * m_apspObj[c_cPages];// pointer to each of the prop
// sheet page objects
HRESULT HrSetupPropSheets(HPROPSHEETPAGE **pahpsp, INT cPages);
VOID CleanupPropPages(VOID);
// CheckForSAPExistance removed. See slm logs to revive
// HRESULT HrCheckForSAPExistance(); // Check to see if SAP is already installed.
HRESULT HrDoConfigDialog();
HRESULT HrWriteDefaultSysVol();
};