|
|
/*++
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_
|