995 lines
16 KiB
C
995 lines
16 KiB
C
#include <nt.h>
|
|
#include <ntrtl.h>
|
|
#include <nturtl.h>
|
|
|
|
#include <windows.h>
|
|
#include <windowsx.h>
|
|
#include <prsht.h>
|
|
#include <commctrl.h>
|
|
#include <setupapi.h>
|
|
#include <ocmanage.h>
|
|
#include <winspool.h>
|
|
#include <winsprlp.h>
|
|
#include <shellapi.h>
|
|
#include <lm.h>
|
|
#include <userenv.h>
|
|
#include <userenvp.h>
|
|
#include <tapi.h>
|
|
#include <shlobj.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <aclapi.h>
|
|
|
|
#ifdef WX86
|
|
#include <wx86ofl.h>
|
|
#endif
|
|
|
|
#include "winfax.h"
|
|
#include "resource.h"
|
|
|
|
#define NO_FAX_LIST
|
|
#include "faxutil.h"
|
|
|
|
#include "faxreg.h"
|
|
|
|
//
|
|
// fax ocm component names
|
|
//
|
|
// WARNING: if you change these strings, you must
|
|
// also change the strings in the setup inf files
|
|
//
|
|
|
|
#define COMPONENT_FAX L"Fax"
|
|
#define COMPONENT_FAX_CLIENT L"Fax_Client"
|
|
#define COMPONENT_FAX_ADMIN L"Fax_Remote_Admin"
|
|
|
|
#define DEFAULT_FAX_STORE_DIR L"%systemroot%\\FaxStore"
|
|
#define FAX_SERVICE_NAME L"Fax"
|
|
#define FAX_PRINTER_NAME L"Fax"
|
|
#define OUTLOOKCONFIG_DIR L"addins"
|
|
#define FAX_DRIVER_NAME L"Windows NT Fax Driver"
|
|
#define FAX_MONITOR_NAME L"Windows NT Fax Monitor"
|
|
#define FAX_MONITOR_FILE L"msfaxmon.dll"
|
|
// #define FAX_SERVICE_DISPLAY_NAME L"Fax Service"
|
|
#define FAX_SERVICE_IMAGE_NAME L"%systemroot%\\system32\\faxsvc.exe"
|
|
#define FAX_SERVICE_DEPENDENCY L"TapiSrv\0RpcSs\0PlugPlay\0Spooler\0"
|
|
#define WINNT_CURVER L"Software\\Microsoft\\Windows NT\\CurrentVersion"
|
|
#define DIGID L"DigitalProductId"
|
|
#define REGKEY_PROFILES L"\\ProfileList"
|
|
#define REGVAL_PROFILES L"ProfilesDirectory"
|
|
|
|
#define FAXAB_SERVICE_NAME L"MSFAX AB"
|
|
#define FAXXP_SERVICE_NAME L"MSFAX XP"
|
|
|
|
#undef StringSize
|
|
#define StringSize(_s) (( _s ) ? (wcslen( _s ) + 1) * sizeof(WCHAR) : 0)
|
|
|
|
#define SecToNano(_sec) (DWORDLONG)((_sec) * 1000 * 1000 * 10)
|
|
#define MinToNano(_min) SecToNano((_min)*60)
|
|
|
|
#define COVERPAGE_EDITOR L"%systemroot%\\system32\\faxcover.exe"
|
|
#define DEFAULT_FAX_PROFILE L""
|
|
|
|
#define COVERPAGE_EXTENSION L".cov"
|
|
#define COVERPAGE_ASSOC_NAME L"Coverpage"
|
|
#define COVERPAGE_ASSOC_DESC L"Fax Coverpage File"
|
|
#define COVERPAGE_OPEN_COMMAND L"%SystemRoot%\\system32\\faxcover.exe \"%1\""
|
|
#define COVERPAGE_PRINT_COMMAND L"%SystemRoot%\\system32\\faxcover.exe /p \"%1\""
|
|
|
|
#define EXCHANGE_CLIENT_EXT_NAME "FaxExtension"
|
|
#define EXCHANGE_CLIENT_EXT_NAMEW L"FaxExtension"
|
|
#define EXCHANGE_CLIENT_EXT_FILE "%windir%\\system32\\faxext32.dll"
|
|
#define EXCHANGE_CONTEXT_MASK "00000100000000"
|
|
|
|
#define DIRID_COVERPAGE 66001
|
|
#define DIRID_CLIENTS 66002
|
|
#define DIRID_OUTLOOK_ECF 66003
|
|
|
|
#define FILEQ_FLAG_ENV 1
|
|
#define FILEQ_FLAG_SHELL 2
|
|
|
|
#define SETUP_ACTION_NONE 0
|
|
#define SETUP_ACTION_COPY 1
|
|
#define SETUP_ACTION_DELETE 2
|
|
|
|
//
|
|
// BugBug... If the CLSID global REGKEY_MYCLSID changes in fax\shellext, then this must also change
|
|
//
|
|
#define FAXSHELL_CLSID L"{7f9609be-af9a-11d1-83e0-00c04fb6e984}"
|
|
|
|
|
|
#define EMPTY_STRING L""
|
|
|
|
|
|
|
|
typedef struct _WIZ_DATA {
|
|
DWORD RoutingMask;
|
|
DWORD Rings;
|
|
DWORD ArchiveOutgoing;
|
|
WCHAR Csid[128];
|
|
WCHAR Tsid[128];
|
|
WCHAR RoutePrinterName[128];
|
|
WCHAR RouteDir[MAX_PATH];
|
|
WCHAR RouteProfile[128];
|
|
WCHAR UserName[128];
|
|
WCHAR PhoneNumber[128];
|
|
WCHAR PrinterName[128];
|
|
WCHAR ArchiveDir[MAX_PATH];
|
|
} WIZ_DATA, *PWIZ_DATA;
|
|
|
|
typedef struct _LINE_INFO {
|
|
DWORD PermanentLineID;
|
|
BOOL Selected;
|
|
LPWSTR DeviceName;
|
|
LPWSTR ProviderName;
|
|
DWORD Rings;
|
|
DWORD Flags;
|
|
} LINE_INFO, *PLINE_INFO;
|
|
|
|
typedef struct _SECURITY_INFO {
|
|
WCHAR AccountName[256];
|
|
WCHAR Password[256];
|
|
} SECURITY_INFO, *PSECURITY_INFO;
|
|
|
|
typedef struct _PLATFORM_INFO {
|
|
LPWSTR PrintPlatform;
|
|
LPWSTR OsPlatform;
|
|
BOOL Selected;
|
|
DWORD Mask;
|
|
LPWSTR DriverDir;
|
|
BOOL ThisPlatform;
|
|
} PLATFORM_INFO, *PPLATFORM_INFO;
|
|
|
|
typedef struct _WIZPAGE {
|
|
DWORD ButtonState;
|
|
DWORD PageId;
|
|
DWORD DlgId;
|
|
DLGPROC DlgProc;
|
|
DWORD Title;
|
|
DWORD SubTitle;
|
|
} WIZPAGE, *PWIZPAGE;
|
|
|
|
typedef struct _FILE_QUEUE_INFO {
|
|
LPWSTR SectionName;
|
|
DWORD InfDirId;
|
|
LPWSTR DirName;
|
|
DWORD Flags;
|
|
DWORD ShellId;
|
|
} FILE_QUEUE_INFO, *PFILE_QUEUE_INFO;
|
|
|
|
typedef struct _FILE_QUEUE_CONTEXT {
|
|
HWND hwnd;
|
|
PVOID QueueContext;
|
|
} FILE_QUEUE_CONTEXT, *PFILE_QUEUE_CONTEXT;
|
|
|
|
//
|
|
// group flags
|
|
//
|
|
|
|
#define USE_COMMON_GROUP 0x00000001 // do not use USE_USER_GROUP and USE_COMMON_GROUP
|
|
#define USE_USER_GROUP 0x00000002 // together, they are mutually exclusive
|
|
#define USE_APP_PATH 0x00000004 // commandline must contain the subkey name
|
|
#define USE_SERVER_NAME 0x00000008 // if we're doing a client install the append the server name to the command line
|
|
#define USE_SHELL_PATH 0x00000010 // use CSIDL_COMMON_APPPATH in front of exe path
|
|
#define USE_SUBDIR 0x00000020 // create a subdir, don't set the working directory
|
|
|
|
typedef struct GROUP_ITEM {
|
|
DWORD ResourceID;
|
|
TCHAR Name[MAX_PATH];
|
|
} GROUP_ITEM, *PGROUPITEM;
|
|
|
|
|
|
typedef struct _GROUP_ITEMS {
|
|
GROUP_ITEM GroupName;
|
|
GROUP_ITEM Description;
|
|
GROUP_ITEM CommandLine;
|
|
GROUP_ITEM IconPath;
|
|
GROUP_ITEM WorkingDirectory;
|
|
DWORD Flags;
|
|
INT IconIndex;
|
|
INT ShowCmd;
|
|
WORD HotKey;
|
|
GROUP_ITEM InfoTip;
|
|
} GROUP_ITEMS, *PGROUP_ITEMS;
|
|
|
|
typedef struct _MDM_DEVSPEC {
|
|
DWORD Contents; // Set to 1 (indicates containing key)
|
|
DWORD KeyOffset; // Offset to key from start of this struct.
|
|
// (not from start of LINEDEVCAPS ).
|
|
// 8 in our case.
|
|
CHAR String[1]; // place containing null-terminated registry key.
|
|
} MDM_DEVSPEC, *PMDM_DEVSPEC;
|
|
|
|
typedef struct {
|
|
HANDLE hComm;
|
|
CHAR szDeviceName[1];
|
|
} DEVICEID, *PDEVICEID;
|
|
|
|
typedef enum _DATAYPE {
|
|
DT_STRING,
|
|
DT_LONGINT,
|
|
DT_BOOLEAN,
|
|
DT_NONE,
|
|
} DATATYPE;
|
|
|
|
typedef struct _UNATTEND_ANSWER {
|
|
LPWSTR KeyName;
|
|
DATATYPE DataType;
|
|
DWORD UseMaskOnBool;
|
|
LPVOID DataPtr;
|
|
} UNATTEND_ANSWER, *PUNATTEND_ANSWER;
|
|
|
|
|
|
extern HINSTANCE hInstance;
|
|
extern SETUP_INIT_COMPONENT SetupInitComponent;
|
|
extern BOOL Unattended;
|
|
extern BOOL Upgrade;
|
|
extern BOOL NtGuiMode;
|
|
extern BOOL NtWorkstation;
|
|
extern DWORD FaxDevices;
|
|
extern BOOL UnInstall;
|
|
extern PLINE_INFO LineInfo;
|
|
extern "C" BOOL MapiAvail;
|
|
extern WORD EnumPlatforms[4];
|
|
extern DWORD InstalledPlatforms;
|
|
extern DWORD CountPlatforms;
|
|
extern PLATFORM_INFO Platforms[];
|
|
extern BOOL RemoteAdminSetup;
|
|
extern BOOL RebootRequired;
|
|
extern BOOL SuppressReboot;
|
|
extern BOOL PointPrintSetup;
|
|
extern DWORD InstallThreadError;
|
|
extern BOOL OkToCancel;
|
|
extern WCHAR ClientSetupServerName[MAX_PATH];
|
|
extern WCHAR ThisPlatformName[MAX_PATH];
|
|
extern DWORD CurrentCountryId;
|
|
extern LPWSTR CurrentAreaCode;
|
|
extern DWORD InstallType;
|
|
extern DWORD Installed;
|
|
extern WIZ_DATA WizData;
|
|
|
|
|
|
#define WM_MY_PROGRESS (WM_USER+100)
|
|
|
|
LPWSTR
|
|
GetString(
|
|
DWORD ResourceId
|
|
);
|
|
|
|
BOOL
|
|
StopFaxService(
|
|
VOID
|
|
);
|
|
|
|
DWORD
|
|
DeviceInitialization(
|
|
HWND hwnd
|
|
);
|
|
|
|
BOOL
|
|
SetWizData(
|
|
VOID
|
|
);
|
|
|
|
INT_PTR
|
|
SecurityErrorDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
CommonDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
DeviceStatusDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
WelcomeDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
FinalDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
EulaDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
PlatformsDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
FileCopyDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
LastPageDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
LastPageUninstallDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
ServerNameDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
StationIdDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
RoutePrintDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
RouteStoreDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
RouteMailDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
RouteSecurityDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
ClientServerNameDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
ClientUserInfoDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
ClientFileCopyDlgProc(
|
|
HWND hwnd,
|
|
UINT msg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
PrinterNameDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
RemoteAdminFileCopyDlgProc(
|
|
HWND hwnd,
|
|
UINT message,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
DeviceSelectionDlgProc(
|
|
HWND hwnd,
|
|
UINT msg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
ExchangeDlgProc(
|
|
HWND hwnd,
|
|
UINT msg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
INT_PTR
|
|
LastClientPageDlgProc(
|
|
HWND hwnd,
|
|
UINT msg,
|
|
WPARAM wParam,
|
|
LPARAM lParam
|
|
);
|
|
|
|
PVOID
|
|
MyEnumPrinters(
|
|
LPWSTR pServerName,
|
|
DWORD level,
|
|
PDWORD pcPrinters,
|
|
DWORD Flags
|
|
);
|
|
|
|
BOOL
|
|
IsPrinterFaxPrinter(
|
|
LPWSTR PrinterName
|
|
);
|
|
|
|
int
|
|
PopUpMsg(
|
|
HWND hwnd,
|
|
DWORD ResourceId,
|
|
BOOL Error,
|
|
DWORD Type
|
|
);
|
|
|
|
BOOL
|
|
UnAttendGetAnswer(
|
|
DWORD ControlId,
|
|
LPBYTE AnswerBuf,
|
|
DWORD AnswerBufSize
|
|
);
|
|
|
|
extern"C"
|
|
BOOL
|
|
GetMapiProfiles(
|
|
HWND hwnd,
|
|
DWORD ResourceId
|
|
);
|
|
|
|
extern"C"
|
|
BOOL
|
|
GetDefaultMapiProfile(
|
|
LPWSTR ProfileName
|
|
);
|
|
|
|
DWORD
|
|
DoUninstall(
|
|
VOID
|
|
);
|
|
|
|
DWORD
|
|
ServerInstallation(
|
|
HWND hwnd,
|
|
LPWSTR SourceRoot
|
|
);
|
|
|
|
BOOL
|
|
DoBrowseDestDir(
|
|
HWND hDlg
|
|
);
|
|
|
|
BOOL
|
|
GetUserInformation(
|
|
LPWSTR *UserName,
|
|
LPWSTR *FaxNumber,
|
|
LPWSTR *AreaCode
|
|
);
|
|
|
|
DWORD
|
|
ClientFileCopyThread(
|
|
HWND hwnd
|
|
);
|
|
|
|
DWORD
|
|
PointPrintFileCopyThread(
|
|
HWND hwnd
|
|
);
|
|
|
|
DWORD
|
|
RemoteAdminCopyThread(
|
|
HWND hwnd
|
|
);
|
|
|
|
VOID
|
|
SetWizPageTitle(
|
|
HWND hWnd
|
|
);
|
|
|
|
DWORD
|
|
GetModemClass(
|
|
HANDLE hFile
|
|
);
|
|
|
|
BOOL
|
|
CreateServerFaxPrinter(
|
|
HWND hwnd,
|
|
LPWSTR FaxPrinterName
|
|
);
|
|
|
|
DWORD
|
|
StartFaxService(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
CreateGroupItems(
|
|
LPWSTR ServerName
|
|
);
|
|
|
|
VOID
|
|
DeleteNt4Group(
|
|
VOID
|
|
);
|
|
|
|
//
|
|
// fileq.c
|
|
//
|
|
|
|
BOOL
|
|
InitializeFileQueue(
|
|
HWND hwnd,
|
|
HINF *SetupInf,
|
|
HSPFILEQ **FileQueue,
|
|
PVOID *QueueContext,
|
|
LPWSTR SourceRoot
|
|
);
|
|
|
|
BOOL
|
|
ProcessFileQueue(
|
|
HINF SetupInf,
|
|
HSPFILEQ *FileQueue,
|
|
PVOID QueueContext,
|
|
LPWSTR SourceRoot,
|
|
PFILE_QUEUE_INFO FileQueueInfo,
|
|
DWORD CountFileQueueInfo,
|
|
PSP_FILE_CALLBACK MyQueueCallback,
|
|
DWORD ActionId
|
|
);
|
|
|
|
BOOL
|
|
CloseFileQueue(
|
|
HSPFILEQ *FileQueue,
|
|
PVOID QueueContext
|
|
);
|
|
|
|
UINT
|
|
InstallQueueCallback(
|
|
IN PVOID QueueContext,
|
|
IN UINT Notification,
|
|
IN UINT Param1,
|
|
IN UINT Param2
|
|
);
|
|
|
|
VOID
|
|
SetProgress(
|
|
DWORD StatusString
|
|
);
|
|
|
|
BOOL
|
|
SetClientRegistryData(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
SetInstalledFlag(
|
|
BOOL Installed
|
|
);
|
|
|
|
BOOL
|
|
SetInstallType(
|
|
DWORD InstallType
|
|
);
|
|
|
|
|
|
DWORD
|
|
CreateClientFaxPrinter(
|
|
HWND hwnd,
|
|
LPWSTR FaxPrinterName
|
|
);
|
|
|
|
BOOL
|
|
InstallHelpFiles(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
DoExchangeInstall(
|
|
HWND hwnd
|
|
);
|
|
|
|
LPWSTR
|
|
RemoveLastNode(
|
|
LPWSTR Path
|
|
);
|
|
|
|
BOOL
|
|
PlatformOverride(
|
|
LPWSTR ThisPlatformName,
|
|
LPWSTR Override,
|
|
LPWSTR SourceRoot,
|
|
LPWSTR Result
|
|
);
|
|
|
|
BOOL
|
|
StartSpoolerService(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
MyDeleteFile(
|
|
LPWSTR FileName
|
|
);
|
|
|
|
int
|
|
PopUpMsgFmt(
|
|
HWND hwnd,
|
|
DWORD ResourceId,
|
|
BOOL Error,
|
|
DWORD Type,
|
|
...
|
|
);
|
|
|
|
LPWSTR
|
|
GetProductName(
|
|
VOID
|
|
);
|
|
|
|
DWORD
|
|
ExtraChars(
|
|
HWND hwnd,
|
|
LPWSTR TextBuffer
|
|
);
|
|
|
|
LPWSTR
|
|
CompactFileName(
|
|
LPCTSTR FileNameIn,
|
|
DWORD CharsToRemove
|
|
);
|
|
|
|
DWORD
|
|
MyStartService(
|
|
LPWSTR ServiceName
|
|
);
|
|
|
|
BOOL
|
|
SetServerRegistryData(
|
|
LPWSTR SourceRoot
|
|
);
|
|
|
|
BOOL
|
|
SetSoundRegistryData(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
DeleteModemRegistryKey(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
SetInstalledPlatforms(
|
|
DWORD PlatformsMask
|
|
);
|
|
|
|
BOOL
|
|
InstallFaxService(
|
|
BOOL UseLocalSystem,
|
|
BOOL DemandStart,
|
|
LPWSTR AccountName,
|
|
LPWSTR Password
|
|
);
|
|
|
|
BOOL
|
|
RenameFaxService(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
SetServiceAccount(
|
|
LPWSTR ServiceName,
|
|
PSECURITY_INFO SecurityInfo
|
|
);
|
|
|
|
BOOL
|
|
DeleteFaxService(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
AddPrinterDrivers(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
CreateNetworkShare(
|
|
LPWSTR Path,
|
|
LPWSTR ShareName,
|
|
LPWSTR Comment
|
|
);
|
|
|
|
DWORD
|
|
SetServiceSecurity(
|
|
LPWSTR AccountName
|
|
);
|
|
|
|
BOOL
|
|
CallModemInstallWizard(
|
|
HWND hwnd
|
|
);
|
|
|
|
BOOL
|
|
DeleteFaxPrinters(
|
|
HWND hwnd
|
|
);
|
|
|
|
BOOL
|
|
DeleteDirectoryTree(
|
|
LPWSTR Root
|
|
);
|
|
|
|
BOOL
|
|
DeleteFaxRegistryData(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
DeleteRegistryTree(
|
|
HKEY hKey,
|
|
LPWSTR SubKey
|
|
);
|
|
|
|
BOOL
|
|
MyDeleteService(
|
|
LPWSTR ServiceName
|
|
);
|
|
|
|
VOID
|
|
DeleteGroupItems(
|
|
VOID
|
|
);
|
|
|
|
extern "C"
|
|
BOOL
|
|
DeleteFaxMsgServices(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
DeleteNetworkShare(
|
|
LPWSTR ShareName
|
|
);
|
|
|
|
extern "C"
|
|
VOID
|
|
AddFaxAbToMapiSvcInf(
|
|
LPWSTR SystemPath
|
|
);
|
|
|
|
extern "C"
|
|
VOID
|
|
AddFaxXpToMapiSvcInf(
|
|
LPWSTR SystemPath
|
|
);
|
|
|
|
extern "C"
|
|
BOOL
|
|
InstallExchangeClientExtension(
|
|
LPSTR ExtensionName,
|
|
LPSTR ExtensionKey,
|
|
LPSTR FileName,
|
|
LPSTR ContextMask
|
|
);
|
|
|
|
extern "C"
|
|
BOOL
|
|
GetExchangeInstallCommand(
|
|
LPWSTR InstallCommand
|
|
);
|
|
|
|
extern "C"
|
|
BOOL
|
|
CreateDefaultMapiProfile(
|
|
LPWSTR ProfileName
|
|
);
|
|
|
|
extern "C"
|
|
BOOL
|
|
InstallFaxAddressBook(
|
|
HWND hwnd,
|
|
LPWSTR ProfileName
|
|
);
|
|
|
|
extern "C"
|
|
BOOL
|
|
InstallFaxTransport(
|
|
LPWSTR ProfileNameW
|
|
);
|
|
|
|
extern "C"
|
|
BOOL
|
|
IsMapiServiceInstalled(
|
|
LPWSTR ProfileNameW,
|
|
LPWSTR ServiceNameW
|
|
);
|
|
|
|
extern "C"
|
|
DWORD
|
|
IsExchangeRunning(
|
|
VOID
|
|
);
|
|
|
|
extern "C"
|
|
BOOL
|
|
InitializeMapi(
|
|
BOOL MinimalInit
|
|
);
|
|
|
|
BOOL
|
|
MyInitializeMapi(
|
|
BOOL MinimalInit
|
|
);
|
|
|
|
|
|
VOID
|
|
InitializeStringTable(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
GetInstallationInfo(
|
|
LPDWORD Installed,
|
|
LPDWORD InstallType,
|
|
LPDWORD InstalledPlatforms
|
|
);
|
|
|
|
HPROPSHEETPAGE
|
|
GetWelcomeWizardPage(
|
|
VOID
|
|
);
|
|
|
|
HPROPSHEETPAGE
|
|
GetEulaWizardPage(
|
|
VOID
|
|
);
|
|
|
|
HPROPSHEETPAGE
|
|
GetFinalWizardPage(
|
|
VOID
|
|
);
|
|
|
|
VOID
|
|
CenterWindow(
|
|
HWND hwnd,
|
|
HWND hwndToCenterOver
|
|
);
|
|
|
|
BOOL
|
|
AddServerFilesToQueue(
|
|
HINF SetupInf,
|
|
HSPFILEQ FileQueue,
|
|
LPWSTR SourceRoot
|
|
);
|
|
|
|
BOOL
|
|
CalcServerDiskSpace(
|
|
HINF SetupInf,
|
|
HDSKSPC DiskSpace,
|
|
LPWSTR SourceRoot,
|
|
BOOL AddToQueue
|
|
);
|
|
|
|
BOOL
|
|
CreateLocalFaxPrinter(
|
|
LPWSTR FaxPrinterName
|
|
);
|
|
|
|
BOOL
|
|
RecreateNt5Beta3FaxPrinters(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
RecreateNt4FaxPrinters(
|
|
VOID
|
|
);
|
|
|
|
DWORD
|
|
ServerGetStepCount(
|
|
VOID
|
|
);
|
|
|
|
BOOL
|
|
RegisterOleControlDlls(
|
|
HINF hInf
|
|
);
|
|
|
|
BOOL
|
|
SetServiceWorldAccessMask(
|
|
SC_HANDLE hService,
|
|
DWORD AccessMask
|
|
);
|
|
|
|
BOOL
|
|
SetKeySecurity(
|
|
HKEY hKey
|
|
);
|
|
|
|
LPWSTR
|
|
VerifyInstallPath(
|
|
LPWSTR SourcePath
|
|
);
|
|
|
|
BOOL
|
|
SetFaxShellExtension(
|
|
LPCWSTR Path
|
|
);
|
|
|
|
BOOL
|
|
IsNt4or351Upgrade(
|
|
VOID
|
|
);
|
|
|
|
|
|
BOOL
|
|
MyGetSpecialPath(
|
|
INT Id,
|
|
LPWSTR Buffer
|
|
);
|
|
|
|
BOOL
|
|
SuperHideDirectory(
|
|
PWSTR Directory
|
|
);
|