625 lines
12 KiB
C
625 lines
12 KiB
C
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
syssetup.h
|
|
|
|
Abstract:
|
|
|
|
Header file for internal-use routines exported from
|
|
syssetup.dll.
|
|
|
|
To use this file your code must #include setupapi.h first.
|
|
|
|
Author:
|
|
|
|
Ted Miller (tedm) 15-Aug-1995
|
|
|
|
Revision History:
|
|
Dan Elliott (dane) 14-Aug-2000 Added SetupWaitForScmInitialization()
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _WINNT_SYSSETUP_
|
|
#define _WINNT_SYSSETUP_
|
|
|
|
#ifndef _NTDEF_
|
|
typedef LONG NTSTATUS, *PNTSTATUS;
|
|
#endif // _NTDEF_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
//
|
|
// Definitions for OOBE
|
|
//
|
|
|
|
typedef enum _PID3_RESULT
|
|
{
|
|
PID_VALID,
|
|
PID_INVALID,
|
|
PID_INVALID_FOR_BATCH
|
|
} PID3_RESULT;
|
|
|
|
|
|
typedef struct _OOBE_LOCALE_INFO {
|
|
|
|
PWSTR Name;
|
|
DWORD Id;
|
|
BOOL Installed;
|
|
|
|
} OOBE_LOCALE_INFO, *POOBE_LOCALE_INFO;
|
|
|
|
DWORD
|
|
WINAPI
|
|
SetupOobeBnk(
|
|
IN LPBYTE lpByte
|
|
);
|
|
|
|
typedef BOOL (WINAPI *PSETUPSETDISPLAY)(
|
|
LPCTSTR lpszUnattend,
|
|
LPCTSTR lpszSection,
|
|
LPCTSTR lpszResolutionKey,
|
|
LPCTSTR lpszRefreshKey,
|
|
DWORD dwMinWidth,
|
|
DWORD dwMinHeight,
|
|
DWORD dwMinBits
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
SetupSetDisplay(
|
|
LPCTSTR lpszUnattend,
|
|
LPCTSTR lpszSection,
|
|
LPCTSTR lpszResolutionKey,
|
|
LPCTSTR lpszRefreshKey,
|
|
DWORD dwMinWidth,
|
|
DWORD dwMinHeight,
|
|
DWORD dwMinBits
|
|
);
|
|
|
|
VOID
|
|
WINAPI
|
|
SetupOobeInitDebugLog(
|
|
);
|
|
|
|
VOID
|
|
WINAPI
|
|
SetupOobeInitPreServices(
|
|
IN BOOL DoMiniSetupStuff
|
|
);
|
|
|
|
VOID
|
|
WINAPI
|
|
SetupOobeInitPostServices(
|
|
IN BOOL DoMiniSetupStuff
|
|
);
|
|
|
|
VOID
|
|
WINAPI
|
|
SetupOobeCleanup(
|
|
IN BOOL DoMiniSetupStuff
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
PrepareForAudit(
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
SetupGetProductType(
|
|
PWSTR Product,
|
|
PDWORD SkuFlags
|
|
);
|
|
|
|
PID3_RESULT
|
|
WINAPI
|
|
SetupPidGen3(
|
|
PWSTR Pid3,
|
|
DWORD SkuFlags,
|
|
PWSTR OemId,
|
|
BOOL Batch,
|
|
PWSTR Pid2,
|
|
LPBYTE lpPid3,
|
|
LPBOOL Compliance
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
SetupGetLocaleOptions(
|
|
IN DWORD OptionalDefault,
|
|
OUT POOBE_LOCALE_INFO *ReturnList,
|
|
OUT PDWORD Items,
|
|
OUT PDWORD Default
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
SetupGetGeoOptions(
|
|
IN DWORD OptionalDefault,
|
|
OUT POOBE_LOCALE_INFO *ReturnList,
|
|
OUT PDWORD Items,
|
|
OUT PDWORD Default
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
SetupGetKeyboardOptions(
|
|
IN DWORD OptionalDefault,
|
|
OUT POOBE_LOCALE_INFO *ReturnList,
|
|
OUT PDWORD Items,
|
|
OUT PDWORD Default
|
|
);
|
|
|
|
VOID
|
|
WINAPI
|
|
SetupDestroyLanguageList(
|
|
IN POOBE_LOCALE_INFO LanguageList,
|
|
IN DWORD Count
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
SetupSetIntlOptions(
|
|
DWORD LocationIndex,
|
|
DWORD LanguageIndex,
|
|
DWORD KeyboardIndex
|
|
);
|
|
|
|
PTSTR
|
|
WINAPI
|
|
SetupReadPhoneList(
|
|
PWSTR PhoneInfName
|
|
);
|
|
|
|
VOID
|
|
WINAPI
|
|
SetupDestroyPhoneList(
|
|
);
|
|
|
|
VOID
|
|
SetupMapTapiToIso (
|
|
IN PWSTR PhoneInfName,
|
|
IN DWORD dwCountryID,
|
|
OUT PWSTR szIsoCode
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
SetupGetSetupInfo(
|
|
PWSTR Name, OPTIONAL
|
|
DWORD cbName,
|
|
PWSTR Org, OPTIONAL
|
|
DWORD cbOrg,
|
|
PWSTR OemId, OPTIONAL
|
|
DWORD cbOemId,
|
|
LPBOOL IntlSet OPTIONAL
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
SetupSetSetupInfo(
|
|
PCWSTR Name,
|
|
PCWSTR Org
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
SetupSetAdminPassword(
|
|
PCWSTR OldPassword,
|
|
PCWSTR NewPassword
|
|
);
|
|
|
|
BOOL
|
|
CreateLocalUserAccount(
|
|
IN PCWSTR UserName,
|
|
IN PCWSTR Password,
|
|
IN PSID* PointerToUserSid OPTIONAL
|
|
);
|
|
|
|
NTSTATUS
|
|
CreateLocalAdminAccount(
|
|
IN PCWSTR UserName,
|
|
IN PCWSTR Password,
|
|
IN PSID* PointerToUserSid OPTIONAL
|
|
);
|
|
|
|
NTSTATUS
|
|
CreateLocalAdminAccountEx(
|
|
IN PCWSTR UserName,
|
|
IN PCWSTR Password,
|
|
IN PCWSTR Description,
|
|
OUT PSID* UserSid OPTIONAL
|
|
);
|
|
|
|
BOOL
|
|
SetAccountsDomainSid(
|
|
IN DWORD Seed,
|
|
IN PCWSTR DomainName
|
|
);
|
|
|
|
void RunOEMExtraTasks();
|
|
|
|
BOOL
|
|
SystemUpdateUserProfileDirectory(
|
|
IN LPTSTR szSrcUser
|
|
);
|
|
|
|
BOOL
|
|
InvokeExternalApplicationEx(
|
|
IN PCWSTR ApplicationName, OPTIONAL
|
|
IN PCWSTR CommandLine,
|
|
IN OUT PDWORD ExitCode, OPTIONAL
|
|
IN DWORD Timeout,
|
|
IN BOOL Hidden
|
|
);
|
|
|
|
VOID
|
|
pSetupDebugPrint(
|
|
PWSTR FileName,
|
|
ULONG LineNumber,
|
|
PWSTR TagStr,
|
|
PWSTR FormatStr,
|
|
...
|
|
);
|
|
|
|
BOOL
|
|
SetupStartService(
|
|
IN PCWSTR ServiceName,
|
|
IN BOOLEAN Wait
|
|
);
|
|
|
|
DWORD
|
|
SetupChangeLocale(
|
|
IN HWND Window,
|
|
IN LCID NewLocale
|
|
);
|
|
|
|
BOOL
|
|
SetupExtendPartition(
|
|
IN WCHAR DriveLetter,
|
|
IN ULONG SizeMB OPTIONAL
|
|
);
|
|
|
|
DWORD
|
|
SetupInstallCatalog(
|
|
IN LPCWSTR DecompressedName
|
|
);
|
|
|
|
BOOL
|
|
SetupShellSettings(
|
|
LPCWSTR lpszUnattend,
|
|
LPCWSTR lpszSection
|
|
);
|
|
|
|
BOOL
|
|
SetupIEHardeningSettings(
|
|
LPCWSTR lpszUnattend,
|
|
LPCWSTR lpszSection
|
|
);
|
|
|
|
DWORD
|
|
SetupAddOrRemoveTestCertificate(
|
|
IN PCWSTR TestCertName, OPTIONAL
|
|
IN HINF InfToUse OPTIONAL
|
|
);
|
|
|
|
DWORD
|
|
SetupChangeLocaleEx(
|
|
IN HWND Window,
|
|
IN LCID NewLocale,
|
|
IN PCWSTR SourcePath, OPTIONAL
|
|
IN DWORD Flags,
|
|
IN PVOID Reserved1,
|
|
IN DWORD Reserved2
|
|
);
|
|
|
|
//
|
|
// Mode values for SetupGetInstallMode... these are unique.
|
|
//
|
|
typedef enum
|
|
{
|
|
SETUP_MODE_NONE, // Not in OS Setup
|
|
SETUP_MODE_SETUP, // Base OS Setup
|
|
SETUP_MODE_MINI, // Mini-Setup (OEM)
|
|
SETUP_MODE_OOBE, // Out of Box Experience
|
|
SETUP_MODE_AUDIT // Audit mode (OEM)
|
|
};
|
|
|
|
//
|
|
// State flags for SetupGetInstallMode... these may be OR'd together.
|
|
//
|
|
#define SETUP_FLAG_OEM 0x00000001 // OEM installation
|
|
#define SETUP_FLAG_UNATTENDED 0x00000002 // Unattended install
|
|
#define SETUP_FLAG_DELAYPNP 0x00000004 // Plug and Play has been delayed
|
|
|
|
//
|
|
// API to determine phase and/or behaviors of OS installation...
|
|
//
|
|
BOOL
|
|
SetupGetInstallMode(
|
|
OUT LPDWORD lpdwMode,
|
|
OUT LPDWORD lpdwFlags
|
|
);
|
|
|
|
#define SP_INSTALL_FILES_QUIETLY 0x00000001
|
|
|
|
DWORD
|
|
SetupChangeFontSize(
|
|
IN HWND Window,
|
|
IN PCWSTR SizeSpec
|
|
);
|
|
|
|
//
|
|
// ACL flags. These may be ORed.
|
|
//
|
|
// SETUP_APPLYACL_PHASE1 indicates whether the Phase1 of ApplyAcls is to be
|
|
// executed. If this flag is set then ApplyAcls() will set ACLs to the
|
|
// Default hive only. If this flag is not set (Phase2), then ApplyAcls()
|
|
// will set ACLs to system files and to all registry keys other than the
|
|
// Default hive.
|
|
//
|
|
// SETUP_APPLYACL_UPGRADE indicates whether ApplyAcls() was invoked on during
|
|
// a clean install or upgrade.
|
|
//
|
|
#define SETUP_APPLYACL_PHASE1 0x00000001
|
|
#define SETUP_APPLYACL_UPGRADE 0x00000002
|
|
|
|
DWORD
|
|
ApplyAcls(
|
|
IN HWND OwnerWindow,
|
|
IN PCWSTR PermissionsInfFileName,
|
|
IN DWORD Flags,
|
|
IN PVOID Reserved
|
|
);
|
|
|
|
BOOL
|
|
SetupCreateOptionalComponentsPage(
|
|
IN LPFNADDPROPSHEETPAGE AddPageCallback,
|
|
IN LPARAM Context
|
|
);
|
|
|
|
typedef
|
|
HWND
|
|
(WINAPI *SETUP_SHOWHIDEWIZARDPAGE)(
|
|
IN BOOL bShow
|
|
);
|
|
|
|
typedef
|
|
LRESULT
|
|
(WINAPI *SETUP_BILLBOARD_PROGRESS_CALLBACK)(
|
|
IN UINT Msg,
|
|
IN WPARAM wParam,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
typedef
|
|
VOID
|
|
(WINAPI *SETUP_BILLBOARD_SET_PROGRESS_TEXT)(
|
|
IN PCWSTR Text
|
|
);
|
|
|
|
|
|
|
|
|
|
//
|
|
// Define structure used by base and net setups to communicate
|
|
// with each other.
|
|
//
|
|
typedef struct _INTERNAL_SETUP_DATA {
|
|
//
|
|
// Structure validity test
|
|
//
|
|
DWORD dwSizeOf;
|
|
|
|
//
|
|
// Custom, typical, laptop, minimal
|
|
//
|
|
DWORD SetupMode;
|
|
|
|
//
|
|
// Workstation, pdc, bdc, standalone
|
|
//
|
|
DWORD ProductType;
|
|
|
|
//
|
|
// Upgrade, unattended, etc.
|
|
//
|
|
DWORD OperationFlags;
|
|
|
|
//
|
|
// Title net setup wizard is supposed to use.
|
|
//
|
|
PCWSTR WizardTitle;
|
|
|
|
//
|
|
// Installation source path.
|
|
//
|
|
PCWSTR SourcePath;
|
|
|
|
//
|
|
// If SETUPOPER_BATCH is set, this is the fully qualified
|
|
// path of the unattend file.
|
|
//
|
|
PCWSTR UnattendFile;
|
|
|
|
//
|
|
// Installation source path to be used by legacy infs, etc.
|
|
// This path has the platform-specific dir stuck on the end
|
|
// because that's the way old-style infs and code expected it.
|
|
//
|
|
PCWSTR LegacySourcePath;
|
|
|
|
//
|
|
// The following generic data fields contain information that is
|
|
// specific to the particular callout being made by Windows NT
|
|
// Setup.
|
|
//
|
|
DWORD CallSpecificData1;
|
|
DWORD CallSpecificData2;
|
|
|
|
//
|
|
// Routine to tell the wizard to show or hide
|
|
// Only has effect if the billboard is shown
|
|
//
|
|
SETUP_SHOWHIDEWIZARDPAGE ShowHideWizardPage;
|
|
|
|
//
|
|
// Routine to call into to the the progress feedback
|
|
// to the billboard.
|
|
//
|
|
SETUP_BILLBOARD_PROGRESS_CALLBACK BillboardProgressCallback;
|
|
|
|
//
|
|
// Routine which tells setup what string to display for the progress bar.
|
|
//
|
|
SETUP_BILLBOARD_SET_PROGRESS_TEXT BillBoardSetProgressText;
|
|
|
|
} INTERNAL_SETUP_DATA, *PINTERNAL_SETUP_DATA;
|
|
|
|
typedef CONST INTERNAL_SETUP_DATA *PCINTERNAL_SETUP_DATA;
|
|
|
|
//
|
|
// Setup mode (custom, typical, laptop, etc)
|
|
// Do not change these values; the bit values are used with infs.
|
|
// Used for SetupMode in INTERNAL_SETUP_DATA structure.
|
|
//
|
|
#define SETUPMODE_MINIMAL 0
|
|
#define SETUPMODE_TYPICAL 1
|
|
#define SETUPMODE_LAPTOP 2
|
|
#define SETUPMODE_CUSTOM 3
|
|
|
|
//
|
|
// Operation flags. These may be or'ed together in some cases.
|
|
// Used for OperationFlags in INTERNAL_SETUP_DATA structure.
|
|
//
|
|
#define SETUPOPER_WIN31UPGRADE 0x00000001
|
|
#define SETUPOPER_WIN95UPGRADE 0x00000002
|
|
#define SETUPOPER_NTUPGRADE 0x00000004
|
|
#define SETUPOPER_BATCH 0x00000008
|
|
#define SETUPOPER_POSTSYSINSTALL 0x00000010
|
|
#define SETUPOPER_PREINSTALL 0x00000020
|
|
#define SETUPOPER_MINISETUP 0x00000040
|
|
|
|
#define SETUPOPER_ALLPLATFORM_AVAIL 0x00008000
|
|
|
|
#define SETUPOPER_NETINSTALLED 0x00010000
|
|
#define SETUPOPER_INTERNETSERVER 0x00020000
|
|
|
|
//
|
|
// Product type flags.
|
|
// Used for ProductType in INTERNAL_SETUP_DATA structure.
|
|
//
|
|
// Note that the flags are carefully constructed such that
|
|
// if bit 0 is set, it's a DC.
|
|
//
|
|
#define PRODUCT_WORKSTATION 0
|
|
#define PRODUCT_SERVER_PRIMARY 1
|
|
#define PRODUCT_SERVER_SECONDARY 3
|
|
#define PRODUCT_SERVER_STANDALONE 2
|
|
#define ISDC(x) ((x) & 1)
|
|
|
|
//
|
|
// Maximum number of net setup wizard pages.
|
|
//
|
|
#define MAX_NETWIZ_PAGES 100
|
|
|
|
//
|
|
// API exported by net setup to give its wizard pages.
|
|
//
|
|
BOOL
|
|
NetSetupRequestWizardPages(
|
|
OUT HPROPSHEETPAGE *Pages,
|
|
IN OUT PUINT PageCount,
|
|
IN OUT PINTERNAL_SETUP_DATA SetupData
|
|
);
|
|
|
|
#define NETSETUPPAGEREQUESTPROCNAME "NetSetupRequestWizardPages"
|
|
|
|
typedef
|
|
BOOL
|
|
(* NETSETUPPAGEREQUESTPROC) (
|
|
OUT HPROPSHEETPAGE *Pages,
|
|
OUT PUINT PageCount,
|
|
IN OUT PINTERNAL_SETUP_DATA SetupData
|
|
);
|
|
|
|
//
|
|
// API exported by net setup to allow post wizard software install
|
|
//
|
|
BOOL
|
|
NetSetupInstallSoftware(
|
|
IN HWND Window,
|
|
IN OUT PINTERNAL_SETUP_DATA SetupData
|
|
);
|
|
|
|
#define NETSETUPINSTALLSOFTWAREPROCNAME "NetSetupInstallSoftware"
|
|
|
|
typedef
|
|
BOOL
|
|
(* NETSETUPINSTALLSOFTWAREPROC) (
|
|
IN HWND Window,
|
|
IN OUT PINTERNAL_SETUP_DATA SetupData
|
|
);
|
|
|
|
//
|
|
// API exported by net setup to allow final setup operations (BDC replication)
|
|
//
|
|
BOOL
|
|
NetSetupFinishInstall(
|
|
IN HWND Window,
|
|
IN OUT PINTERNAL_SETUP_DATA SetupData
|
|
);
|
|
|
|
#define NETSETUPFINISHINSTALLPROCNAME "NetSetupFinishInstall"
|
|
|
|
typedef
|
|
BOOL
|
|
(* NETSETUPFINISHINSTALLPROC) (
|
|
IN HWND Window,
|
|
IN OUT PINTERNAL_SETUP_DATA SetupData
|
|
);
|
|
|
|
//
|
|
// API exported by printer setup to upgrade printer drivers
|
|
//
|
|
DWORD
|
|
NtPrintUpgradePrinters(
|
|
IN HWND Window,
|
|
IN PCINTERNAL_SETUP_DATA SetupData
|
|
);
|
|
|
|
#define UPGRADEPRINTERSPROCNAME ((LPCSTR)1)
|
|
|
|
typedef
|
|
DWORD
|
|
(* UPGRADEPRINTERSPROC) (
|
|
IN HWND Window,
|
|
IN PCINTERNAL_SETUP_DATA SetupData
|
|
);
|
|
|
|
|
|
//
|
|
// API exported by syspnp.c to update device drivers
|
|
//
|
|
|
|
BOOL
|
|
UpdatePnpDeviceDrivers(
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // def _WINNT_SYSSETUP_
|