|
|
/*++
Copyright (c) 1998 Microsoft Corporation
Module Name:
w95upg.h
Abstract:
Defines types and functions, and declares globals used for w95upg.dll only.
Author:
Jim Schmidt (jimschm) 25-Sep-1996
Revision History:
See SLM log
--*/
#pragma once
// property sheet
#include <prsht.h>
// twain data structs
#include <twain.h>
#include "unattend.h"
WINNT32_PLUGIN_INIT_ROUTINE_PROTOTYPE Winnt32PluginInit; WINNT32_PLUGIN_GETPAGES_ROUTINE_PROTOTYPE Winnt32PluginGetPages; WINNT32_PLUGIN_WRITEPARAMS_ROUTINE_PROTOTYPE Winnt32WriteParams; WINNT32_PLUGIN_CLEANUP_ROUTINE_PROTOTYPE Winnt32Cleanup;
extern UINT g_ProgressBarTime;
//
// Macro returns true if setup is running in unattended mode.
//
#define UNATTENDED() (g_UnattendedFlagPtr && *g_UnattendedFlagPtr)
//
// Macro returns true if setup is running in upgrade mode.
//
#define UPGRADE() (g_UpgradeFlagPtr && *g_UpgradeFlagPtr)
//
// Macro returns true if setup is running in report-only mode.
//
#define REPORTONLY() (g_ConfigOptions.ReportOnly)
//
// Macro returns true if setup is running in typical mode.
//
#define TYPICAL() (g_SetupFlags && (*g_SetupFlags & UPG_FLAG_TYPICAL))
//
// Macros for setting, clearing, and checking the cancel flag.
//
#define SETCANCEL() (g_CancelFlagPtr ? *g_CancelFlagPtr = TRUE : 0)
#define CLEARCANCEL() (g_CancelFlagPtr ? *g_CancelFlagPtr = FALSE : 0)
#define CANCELLED() (g_CancelFlagPtr && *g_CancelFlagPtr)
#define SOURCEDIRECTORYCOUNT() (g_SourceDirectoryCount)
#define SOURCEDIRECTORYARRAY() (g_SourceDirectories)
#define SOURCEDIRECTORY(n) (g_SourceDirectories[n])
#define OPTIONALDIRECTORYCOUNT() (g_OptionalDirectoryCount)
#define OPTIONALDIRECTORYARRAY() (g_OptionalDirectories)
#define OPTIONALDIRECTORY(n) (g_OptionalDirectories[n])
//
// Globals in dllentry.c
//
extern PTSTR g_WinDir; extern PTSTR g_WinDirWack; extern PTSTR g_WinDrive; extern PTSTR g_PlugInDir; extern PTSTR g_PlugInDirWack; extern PTSTR g_PlugInTempDir; extern PTSTR g_TempDir; extern PTSTR g_Win9xSifDir; extern PTSTR g_TempDirWack; extern PTSTR g_SystemDir; extern PTSTR g_SystemDirWack; extern PTSTR g_System32Dir; extern PTSTR g_System32DirWack; extern PTSTR g_ProgramFilesDir; extern PTSTR g_ProgramFilesDirWack; extern PTSTR g_ProgramFilesCommonDir; extern PTSTR g_RecycledDirWack; extern PTSTR g_Win95UpgInfFile; extern PTSTR g_ProfileDirNt; extern PTSTR g_ProfileDir; extern PTSTR g_ProfileDirWack; extern PTSTR g_CommonProfileDir; extern PTSTR g_DriversDir; extern PTSTR g_InfDir; extern PTSTR g_HelpDir; extern PTSTR g_HelpDirWack; extern PTSTR g_CatRootDir; extern PTSTR g_CatRootDirWack; extern PTSTR g_FontsDir; extern PTSTR g_ViewersDir; extern PTSTR g_ColorDir; extern PTSTR g_SharedDir; extern PTSTR g_SpoolDir; extern PTSTR g_SpoolDriversDir; extern PTSTR g_PrintProcDir; extern PCTSTR g_SourceDirectories[MAX_SOURCE_COUNT]; extern DWORD g_SourceDirectoryCount; extern PCTSTR g_OptionalDirectories[MAX_SOURCE_COUNT]; extern DWORD g_OptionalDirectoryCount; extern PCTSTR* g_SourceDirectoriesFromWinnt32; extern PDWORD g_SourceDirectoryCountFromWinnt32; extern PCTSTR* g_OptionalDirectoriesFromWinnt32; extern PDWORD g_OptionalDirectoryCountFromWinnt32; extern PCTSTR* g_UnattendScriptFile; extern PCTSTR* g_CmdLineOptions; extern TCHAR g_DllDir[]; extern TCHAR g_UpgradeSources[]; extern BOOL * g_UnattendedFlagPtr; extern BOOL * g_CancelFlagPtr; extern BOOL * g_AbortFlagPtr; extern BOOL * g_UpgradeFlagPtr; extern BOOL * g_MakeLocalSourcePtr; extern BOOL * g_CdRomInstallPtr; extern BOOL * g_BlockOnNotEnoughSpace; extern PDWORD g_LocalSourceDrive; extern PLONGLONG g_LocalSourceSpace; extern PLONGLONG g_WinDirSpace; extern PUINT g_RamNeeded; extern PUINT g_RamAvailable; extern HINF g_Win95UpgInf; extern HINF g_TxtSetupSif; extern TCHAR g_Win95Name[MAX_TCHAR_PATH]; extern BOOL * g_ForceNTFSConversion; extern UINT * g_ProductFlavor; extern BOOL g_PersonalSKU; extern PDWORD g_SetupFlags; extern PTSTR g_DynamicUpdateLocalDir; extern PTSTR g_DynamicUpdateDrivers; extern BOOL * g_UnattendSwitchSpecified;
extern INT g_TempDirWackChars; extern INT g_WinDirWackChars; extern INT g_HelpDirWackChars; extern INT g_CatRootDirWackChars; extern INT g_SystemDirWackChars; extern INT g_System32DirWackChars; extern INT g_PlugInDirWackChars; extern INT g_RecycledDirWackChars; extern INT g_ProfileDirWackChars; extern INT g_ProgramFilesDirWackChars;
extern PRODUCTTYPE * g_ProductType; extern USEROPTIONS g_ConfigOptions;
extern BOOL g_UseSystemFont;
extern LPCTSTR g_ProfileName;
extern HWND g_ParentWnd;
extern PCTSTR g_AdministratorStr;
#ifdef PRERELEASE
extern BOOL g_Stress; // private stress mode
#endif
extern POOLHANDLE g_GlobalPool; // for global strings that last for the complete runtime
extern UINT * g_Boot16;
extern BOOL g_BadVirusScannerFound; extern BOOL g_BlockingFileFound; extern BOOL g_BlockingHardwareFound; extern BOOL g_BlockingAppFound; extern BOOL g_KillNav; extern GROWLIST g_BadVirusScannerGrowList; extern BOOL g_OtherOsExists; extern BOOL g_UnknownOs; extern BOOL g_ToolMode;
extern DWORD g_BackupDirCount;
extern PMAPSTRUCT g_CacheShellFolders;
//
// Globals in sysmig\migmain.c
//
extern ICON_EXTRACT_CONTEXT g_IconContext;
//
// Tool Mode: Routines specific to non-shipping tools
//
BOOL InitToolMode ( HINSTANCE Instance );
VOID TerminateToolMode ( HINSTANCE Instance );
//
// COMMON9X: common9x.c
//
VOID InitializeKnownGoodIconMap ( VOID );
VOID CleanUpKnownGoodIconMap ( VOID );
BOOL IsIconKnownGood ( IN PCTSTR FileSpec, IN INT Index );
typedef struct { TCHAR JoystickDriver[MAX_TCHAR_PATH]; TCHAR JoystickName[MAX_TCHAR_PATH];
HKEY Root; UINT JoyId; } JOYSTICK_ENUM, *PJOYSTICK_ENUM;
BOOL EnumFirstJoystick ( OUT PJOYSTICK_ENUM EnumPtr );
BOOL EnumNextJoystick ( IN OUT PJOYSTICK_ENUM EnumPtr );
VOID AbortJoystickEnum ( IN OUT PJOYSTICK_ENUM EnumPtr );
LRESULT TwoButtonBox ( IN HWND Window, IN PCTSTR Text, IN PCTSTR Button1, IN PCTSTR Button2 );
BOOL DontTouchThisFile ( IN PCTSTR FileName );
VOID ReplaceOneEnvVar ( IN OUT PCTSTR *NewString, IN PCTSTR Base, IN PCTSTR Variable, IN PCTSTR Value );
VOID Init9xEnvironmentVariables ( VOID );
BOOL Expand9xEnvironmentVariables ( IN PCSTR SourceString, OUT PSTR DestinationString, // can be the same as SourceString
IN INT DestSizeInBytes );
VOID CleanUp9xEnvironmentVariables ( VOID );
BOOL FixGuid ( IN PCTSTR Guid, OUT PTSTR NewGuid // can be the same as Guid
);
BOOL IsGuid ( IN PCTSTR Guid, IN BOOL MustHaveBraces );
//
// COMMON9X: userenum.c
//
typedef enum { NAMED_USER = 0x0001, DEFAULT_USER = 0x0002, ADMINISTRATOR = 0x0004, LAST_LOGGED_ON_USER = 0x0008, INVALID_ACCOUNT = 0x0010, LOGON_PROMPT = 0x0020, CURRENT_USER = 0x0040 } ACCOUNTTYPE;
typedef enum { UE_STATE_INIT, UE_STATE_BEGIN_WIN95REG, UE_STATE_NEXT_WIN95REG, UE_STATE_NO_USERS, UE_STATE_ADMINISTRATOR, UE_STATE_LOGON_PROMPT, UE_STATE_DEFAULT_USER, UE_STATE_RETURN, UE_STATE_CLEANUP, UE_STATE_END } USERENUM_STATE;
typedef struct { // Enumeration Output
TCHAR UserName[MAX_USER_NAME]; // always filled, even for logon prompt or default user
TCHAR FixedUserName[MAX_USER_NAME]; // always filled, unless caller specifically turns this off
TCHAR AdminUserName[MAX_USER_NAME]; // filled if AccountType is ADMINISTRATOR
TCHAR FixedAdminUserName[MAX_USER_NAME]; // filled if AccountType is ADMINISTRATOR
TCHAR UserDatPath[MAX_TCHAR_PATH]; // is empty if AccountType has INVALID_ACCOUNT
TCHAR ProfileDirName[MAX_TCHAR_PATH]; // is empty if AccountType has INVALID_ACCOUNT
TCHAR OrgProfilePath[MAX_TCHAR_PATH]; // is empty if AccountType has INVALID_ACCOUNT
TCHAR NewProfilePath[MAX_TCHAR_PATH]; // symbolic path because actual path is not known
ACCOUNTTYPE AccountType; // always filled
BOOL CreateAccountOnly; // TRUE for valid accounts that won't be migrated
HKEY UserRegKey; // NULL if AccountType has INVALID_ACCOUNT, or caller specifies no hive flag
BOOL CommonProfilesEnabled; // filled by EnumFirstUser
// Privates for enumeration
BOOL EnableNameFix; BOOL DoNotMapHive; BOOL WantCreateOnly; BOOL WantLogonPrompt;
USERPOSITION pos; BOOL DefaultUserHive; BOOL RealAdminAccountExists; BOOL LastEnumWasAdmin; TCHAR LastLoggedOnUserName[MAX_USER_NAME]; TCHAR CurrentUserName[MAX_USER_NAME]; PVOID ProfileDirTable; USERENUM_STATE State; USERENUM_STATE NextState; } USERENUM, *PUSERENUM;
#define ENUMUSER_ENABLE_NAME_FIX 0x0001
#define ENUMUSER_DO_NOT_MAP_HIVE 0x0002
#define ENUMUSER_ADMINISTRATOR_ALWAYS 0x0004
#define ENUMUSER_NO_LOGON_PROMPT 0x0008
BOOL EnumFirstUser ( OUT PUSERENUM EnumPtr, IN DWORD Flags );
BOOL EnumNextUser ( IN OUT PUSERENUM EnumPtr );
VOID EnumUserAbort ( IN OUT PUSERENUM EnumPtr );
//
// COMMON9X: ntenv.c
//
VOID InitNtEnvironment ( VOID );
VOID TerminateNtEnvironment ( VOID );
VOID InitNtUserEnvironment ( IN PUSERENUM UserEnumPtr );
VOID TerminateNtUserEnvironment ( VOID );
VOID MapNtUserEnvironmentVariable ( IN PCSTR Variable, IN PCSTR Value );
VOID MapNtSystemEnvironmentVariable ( IN PCSTR Variable, IN PCSTR Value );
BOOL ExpandNtEnvironmentVariables ( IN PCSTR SourceString, OUT PSTR DestinationString, // can be the same as SourceString
IN INT DestSizeInBytes );
//
// COMMON9X: namefix.c
//
BOOL ValidateName ( IN HWND ParentWnd, OPTIONAL IN PCTSTR NameGroup, IN PCTSTR NameCandidate );
BOOL ValidateDomainNameChars ( IN PCTSTR NameCandidate );
BOOL ValidateUserNameChars ( IN PCTSTR NameCandidate );
VOID CreateNameTables ( VOID );
BOOL IsIncompatibleNamesTableEmpty ( VOID );
BOOL GetUpgradeComputerName ( OUT PTSTR NewComputerName );
BOOL GetUpgradeDomainName ( OUT PTSTR ComputerDomainName );
BOOL GetUpgradeWorkgroupName ( OUT PTSTR WorkgroupName );
BOOL GetUpgradeUserName ( IN PCTSTR User, OUT PTSTR NewUserName );
BOOL WarnAboutBadNames ( IN HWND PopupParent );
BOOL IsOriginalDomainNameValid ( VOID );
//
// COMMON9X: twain.c
//
//
// TWAIN support
//
typedef enum { TE_INIT, TE_BEGIN_ENUM, TE_EVALUATE, TE_RETURN, TE_NEXT, TE_END_ENUM, TE_DONE } TWAIN_ENUM_STATE;
typedef struct { // externally used members
TW_STR32 Manufacturer; TW_STR32 ProductFamily; TW_STR32 DisplayName; CHAR DataSourceModule[MAX_MBCHAR_PATH];
// internal enum members
TWAIN_ENUM_STATE State; PCTSTR Dir; TREE_ENUM Enum; } TWAINDATASOURCE_ENUM, *PTWAINDATASOURCE_ENUM;
BOOL EnumFirstTwainDataSource ( OUT PTWAINDATASOURCE_ENUM EnumPtr );
BOOL EnumNextTwainDataSource ( IN OUT PTWAINDATASOURCE_ENUM EnumPtr );
VOID AbortTwainDataSourceEnum ( IN OUT PTWAINDATASOURCE_ENUM EnumPtr );
//
// Routine to add paths to Migration paths; defined in migapp\filescan.c
//
VOID AddMigrationPathEx ( IN PCTSTR PathLong, IN DWORD Levels, IN BOOL Win9xOsPath );
#define AddMigrationPath(p,l) AddMigrationPathEx(p,l,FALSE)
//
// Routine to check if a file is a Win32 DLL (migapp\modules.c)
//
BOOL IsWin32Library ( IN PCTSTR ModuleName );
//
// Routine to check if a file is a Win32 EXE (migapp\modules.c)
//
BOOL IsWin32Exe ( IN PCTSTR ModuleName );
//
// Routine to check if the currently generated report is empty,
// given a Level of filtration
//
BOOL IsReportEmpty ( IN DWORD Level );
//
// SYSMIG: userloop.c
//
PCTSTR ShellFolderGetPath ( IN PUSERENUM EnumPtr, IN PCTSTR ShellFolderId );
//
// constant to identify the whole subtree of a path
//
#define MAX_DEEP_LEVELS 0xFFFFFFFF
//
// Enumeration structs
//
typedef enum { ENUM_STATE_INIT, ENUM_STATE_ENUM_FIRST_GROUP_ITEM, ENUM_STATE_RETURN_GROUP_ITEM, ENUM_STATE_ENUM_NEXT_GROUP_ITEM, ENUM_STATE_ENUM_NEXT_GROUP, ENUM_STATE_DONE } INVALID_NAME_STATE;
typedef struct { //
// Enumeration state
//
PCTSTR GroupName; TCHAR DisplayGroupName[256]; PCTSTR OriginalName; TCHAR NewName[MEMDB_MAX]; DWORD Identifier;
//
// Private enumeration members
//
MEMDB_ENUM NameGroup; MEMDB_ENUM Name; INVALID_NAME_STATE State; } INVALID_NAME_ENUM, *PINVALID_NAME_ENUM;
//
// Enumeration routines
//
BOOL EnumFirstInvalidName ( OUT PINVALID_NAME_ENUM EnumPtr );
BOOL EnumNextInvalidName ( IN OUT PINVALID_NAME_ENUM EnumPtr );
//
// Maintenence routines
//
VOID GetNamesFromIdentifier ( IN DWORD Identifier, IN PTSTR NameGroup, OPTIONAL IN PTSTR OriginalName, OPTIONAL IN PTSTR NewName OPTIONAL );
VOID ChangeName ( IN DWORD Identifier, IN PCTSTR NewName );
VOID DisableDomainChecks ( VOID );
VOID EnableDomainChecks ( VOID );
DWORD GetDomainIdentifier ( VOID );
BOOL TreatAsGood ( IN PCTSTR FullPath );
VOID TerminateWinntSifBuilder ( VOID );
//
// win95upg.inf sections and keys
//
#define SECTION_MIGRATION_FILES TEXT("MigrationFiles")
#define SECTION_MIGRATION_DIRECTORIES TEXT("MigrationDirectories")
#define KEY_TEMP_BASE TEXT("TempBase")
#define KEY_MIG_EXT_ROOT TEXT("MigExtRoot")
#define KEY_PATHS_FILE TEXT("MigExtPathsFile")
#define WINDIR_SYSTEM_FIXED_FILES TEXT("WinDirSystemFixedFiles")
#define SYSTEM32_FORCED_MOVE TEXT("System32ForcedMove")
//
// Other string constants
//
#define STR_WIN95UPG_INF TEXT("win95upg.inf")
#define STR_SYSTEM32 TEXT("System32")
// ticks for all functions
#define TICKS_READ_NT_FILES 3000
#define TICKS_MISC_MESSAGES 1
#define TICKS_BUILD_UNATTEND 700
#define TICKS_PRESERVE_SHELL_ICONS 1300
#define TICKS_DELETE_WIN_DIR_WACK_INF 2100
#define TICKS_MOVE_INI_FILES 30
#define TICKS_SAVE_DOS_FILES 10
#define TICKS_INIT_WIN95_REGISTRY 10
#define TICKS_SAVE_SHARES 130
#define TICKS_BAD_NAMES_WARNING 10
#define TICKS_SAVE_MM_SETTINGS_SYSTEM 50
#define TICKS_SAVE_MM_SETTINGS_USER 1100
#define TICKS_CONDITIONAL_INCOMPATIBILITIES 200
#define TICKS_HARDWARE_PROFILE_WARNING 10
#define TICKS_UNSUPPORTED_PROTOCOLS_WARNING 30
#define TICKS_RAS_PREPARE_REPORT 100
#define TICKS_END_MIGRATION_DLL_PROCESSING 100
#define TICKS_PREPARE_PROCESS_MODULES 5000
#define TICKS_PROCESS_MODULES 10000
#define TICKS_PROCESS_COMPATIBLE_SECTION 100
#define TICKS_INIT_MIGDB 6200
#define TICKS_DONE_MIGDB 4100
#define TICKS_PROCESS_RUN_KEY 20
#define TICKS_PROCESS_SHELL_SETTINGS 25
#define TICKS_CHECK_NT_DIRS 300
#define TICKS_MOVE_SYSTEM_DIR 6200
#define TICKS_PROCESS_LINKS 3000
#define TICKS_PROCESS_CPLS 3000
#define TICKS_FILESCAN_DIR_INCREMENT 400
#define TICKS_DOSMIG_PREPARE_REPORT 300
#define TICKS_MIGDLL_QUERYVERSION 500
#define TICKS_MIGDLL_DELTA 1000
#define TICKS_MOVE_STATIC_FILES 15
#define TICKS_COPY_STATIC_FILES 15
#define TICKS_USERPROFILE_MIGRATION 250
#define TICKS_MOVE_SYSTEMREGISTRY 10
#define TICKS_OLEREG 8000
#define TICKS_TWAIN 100
#define TICKS_BACKUP_LAYOUT_OUTPUT 7000
#define TICKS_SPACECHECK 5000
#define TICKS_JOYSTICK_DETECTION 50
#define TICKS_RECYCLEBINS 2000
#define TICKS_GATHER_IME_INFO 2000
#define TICKS_INIT_HLP_PROCESSING 50
#define TICKS_ANSWER_FILE_DETECTION 20
#define TICKS_INIT_APP_COMPAT 1000
#define TICKS_DONE_APP_COMPAT 100
#define TICKS_GATHERDEAD 120
#define TICKS_CREATE_FILE_LISTS 7000
#define TICKS_PREPAREPNPIDLIST 450
#define TICKS_ADDDEFAULTCLEANUPDIRS 155
#define TICKS_INITINIPROCESSING 255
#define TICKS_DELETESTATICFILES 320
#define TICKS_PROCESSMIGRATIONSECTIONS 2400
#define TICKS_REPORTMAPIIFNOTHANDLED 200
#define TICKS_FUSIONFILES 300
#define TICKS_REPORTDARWINIFNOTHANDLED 200
|