windows-nt/Source/XPSP1/NT/printscan/publish/splsetup.w
2020-09-26 16:20:57 +08:00

681 lines
15 KiB
OpenEdge ABL

/*++
Copyright (c) 1995-97 Microsoft Corporation
All rights reserved.
Module Name:
splsetup.h
Abstract:
Holds spooler install headers.
Author:
Muhunthan Sivapragasam (MuhuntS) 20-Oct-1995
Revision History:
--*/
#ifndef _SPLSETUP_H
#define _SPLSETUP_H
#ifdef __cplusplus
extern "C" {
#endif
//
// Type definitions
//
typedef enum {
PlatformAlpha,
PlatformX86,
PlatformMIPS,
PlatformPPC,
PlatformWin95,
PlatformIA64,
PlatformAlpha64
} PLATFORM;
typedef enum {
DRIVER_NAME,
INF_NAME,
DRV_INFO_4,
PRINT_PROCESSOR_NAME,
ICM_FILES,
DRV_INFO_6
} FIELD_INDEX;
typedef struct _DRIVER_FIELD {
FIELD_INDEX Index;
union {
LPTSTR pszDriverName;
LPTSTR pszInfName;
LPDRIVER_INFO_4 pDriverInfo4;
LPTSTR pszPrintProc;
LPTSTR pszzICMFiles;
LPDRIVER_INFO_6 pDriverInfo6;
};
} DRIVER_FIELD, *PDRIVER_FIELD;
typedef struct _PSETUP_LOCAL_DATA * PPSETUP_LOCAL_DATA;
typedef struct _SELECTED_DRV_INFO * PSELECTED_DRV_INFO;
#define SELECT_DEVICE_HAVEDISK 0x00000001
#define SELECT_DEVICE_FROMWEB 0x00000002
//
// Function prototypes
//
HDEVINFO
PSetupCreatePrinterDeviceInfoList(
IN HWND hwnd
);
BOOL
PSetupDestroyPrinterDeviceInfoList(
IN HDEVINFO hPrinterDevInfo
);
HPROPSHEETPAGE
PSetupCreateDrvSetupPage(
IN HDEVINFO hDevInfo,
IN HWND hwnd
);
BOOL
PSetupBuildDriversFromPath(
IN HDEVINFO hDevInfo,
IN LPCTSTR pszDriverPath,
IN BOOL bEnumSingleInf
);
BOOL
PSetupSelectDriver(
IN HDEVINFO hPrinterDevInfo
);
BOOL
PSetupPreSelectDriver(
IN HDEVINFO hDevInfo,
IN LPCTSTR pszManufacturer, OPTIONAL
IN LPCTSTR pszModel OPTIONAL
);
PPSETUP_LOCAL_DATA
PSetupGetSelectedDriverInfo(
IN HDEVINFO hDevInfo
);
PPSETUP_LOCAL_DATA
PSetupDriverInfoFromName(
IN HDEVINFO hDevInfo,
IN LPCTSTR pszModel
);
BOOL
PSetupDestroySelectedDriverInfo(
IN PPSETUP_LOCAL_DATA pLocalData
);
//
// Driver install flags
//
#define DRVINST_FLATSHARE 0x00000001
#define DRVINST_DONOTCOPY_INF 0x00000002
#define DRVINST_DRIVERFILES_ONLY 0x00000004
#define DRVINST_PROMPTLESS 0x00000008
#define DRVINST_PROGRESSLESS 0x00000010
#define DRVINST_WEBPNP 0x00000020
/*
DRVINST_WINDOWS_UPDATE - Flag for PrintUI to set to ensure that SPOST_URL gets set.
Setting the SPOST_URL is for setup to ignore the inf of this
driver during all setup calls except for a Web Point and Print.
This flag makes sure that the driver is install with all the
spoolers hosted by the local machines (including cluster spoolers)
*/
#define DRVINST_WINDOWS_UPDATE 0x00000040
/*
DRVINST_PRIVATE_DIRECTORY - Flag to tell that we want to use a private directory for the copying.
This is specifically to fix TS where we can get into a AddPrinterDriver
race condition where the drivers can get deleted before APD is called when
adding multiple drivers.
Note - using this flag means that NTPrint must do the file deletion.
*/
#define DRVINST_PRIVATE_DIRECTORY 0x00000080
//
// Set if we install drivers for a non-native platform
//
#define DRVINST_ALT_PLATFORM_INSTALL 0x00000100
//
// Set if we want PSetupInstallPrinterDriver not advertise warned or blocked
// drivers through the UI. Note that if DRVINST_PROMPTLESS is specified, this
// is implied.
//
#define DRVINST_NO_WARNING_PROMPT 0x00000200
//
// Set if we want PSetupInstallPrinterDriver to install the printer driver
// without asking the user if they would rather have an inbox printer driver
// be installed. This is because the print UI can't necessarily take advantage
// of the new driver at all points.
//
#define DRVINST_DONT_OFFER_REPLACEMENT 0x00000400
//
// return values for pdwBlockingStatusFlags
//
#define BSP_PRINTER_DRIVER_OK 0
#define BSP_PRINTER_DRIVER_BLOCKED 0x00000001
#define BSP_PRINTER_DRIVER_WARNED 0x00000002
#define BSP_BLOCKING_LEVEL_MASK 0x000000ff
#define BSP_INBOX_DRIVER_AVAILABLE 0x00000100
#define BSP_PRINTER_DRIVER_CANCELLED 0x80000000
#define BSP_PRINTER_DRIVER_PROCEEDED 0x40000000
#define BSP_PRINTER_DRIVER_REPLACED 0x20000000
#define BSP_USER_RESPONSE_MASK 0xff000000
DWORD
PSetupInstallPrinterDriver(
IN HDEVINFO hDevInfo,
IN PPSETUP_LOCAL_DATA pLocalData,
IN LPCTSTR pszDriverName,
IN PLATFORM platform,
IN DWORD dwVersion,
IN LPCTSTR pszServerName,
IN HWND hwnd,
IN LPCTSTR pszDiskName,
IN LPCTSTR pszSource,
IN DWORD dwInstallFlags,
IN DWORD dwAddDrvFlags,
OUT LPTSTR *ppszNewDriverName
);
BOOL
PSetupIsCompatibleDriver(
IN LPCTSTR pszServer, OPTIONAL
IN LPCTSTR pszDriverModel,
IN LPCTSTR pszDriverPath, // main rendering driver dll
IN LPCTSTR pszEnvironment,
IN DWORD dwVersion,
IN FILETIME *pFileTimeDriver,
OUT DWORD *pdwBlockingStatus, // returns BSP_DRIVER_OK, BSP_PRINTER_DRIVER_BLOCKED or BSP_PRINTER_DRIVER_WARNED
OUT LPTSTR *ppszReplacementDriver OPTIONAL // caller must free it.
);
//
// returns BSP_PRINTER_DRIVER_CANCELLED, BSP_PRINTER_DRIVER_PROCEEDED or BSP_PRINTER_DRIVER_REPLACED
//
DWORD
PSetupShowBlockedDriverUI(
HWND hParentWnd,
DWORD BlockingStatus // can be BSP_DRIVER_OK, BSP_PRINTER_DRIVER_BLOCKED or BSP_PRINTER_DRIVER_WARNED OR'd with BSP_INBOX_REPLACEMENT_AVAILABLE
);
#define DRIVER_MODEL_NOT_INSTALLED 0
#define DRIVER_MODEL_INSTALLED_AND_IDENTICAL 1
#define DRIVER_MODEL_INSTALLED_BUT_DIFFERENT -1
#define KERNEL_MODE_DRIVER_VERSION -1
BOOL
PSetupIsDriverInstalled(
IN LPCTSTR pszServerName,
IN LPCTSTR pszDriverName,
IN PLATFORM platform,
IN DWORD dwMajorVersion
);
INT
PSetupIsTheDriverFoundInInfInstalled(
IN LPCTSTR pszServerName,
IN PPSETUP_LOCAL_DATA pLocalData,
IN PLATFORM platform,
IN DWORD dwMajorVersion
);
BOOL
PSetupRefreshDriverList(
IN HDEVINFO hDevInfo
);
BOOL
PSetupIsOemDriver(
IN HDEVINFO hDevInfo,
IN PPSETUP_LOCAL_DATA pLocalData,
IN PBOOL pbIsOemDriver
);
PLATFORM
PSetupThisPlatform(
VOID
);
BOOL
PSetupGetPathToSearch(
IN HWND hwnd,
IN LPCTSTR pszTitle,
IN LPCTSTR pszDiskName,
IN LPCTSTR pszFileName,
IN BOOL bPromptForInf,
IN OUT TCHAR szPath[MAX_PATH]
);
BOOL
PSetupProcessPrinterAdded(
IN HDEVINFO hDevInfo,
IN PPSETUP_LOCAL_DATA pLocalData,
IN LPCTSTR pszPrinterName,
IN HWND hwnd
);
BOOL
PSetupSetSelectDevTitleAndInstructions(
IN HDEVINFO hDevInfo,
IN LPCTSTR pszTitle,
IN LPCTSTR pszSubTitle,
IN LPCTSTR pszInstn
);
BOOL
PSetupSelectDeviceButtons(
IN HDEVINFO hDevInfo,
IN DWORD dwFlagsSet,
IN DWORD dwFlagsClear
);
BOOL
PSetupGetLocalDataField(
IN PPSETUP_LOCAL_DATA pLocalData,
IN PLATFORM platform,
IN OUT PDRIVER_FIELD pDrvField
);
VOID
PSetupFreeDrvField(
IN PDRIVER_FIELD pDrvField
);
//
// Internet printing support
//
BOOL
PSetupGetDriverInfForPrinter(
IN HDEVINFO hDevInfo,
IN LPCTSTR pszPrinterName,
IN OUT LPTSTR pszInfName,
IN OUT LPDWORD pcbInfNameSize
);
DWORD
PSetupInstallPrinterDriverFromTheWeb(
IN HDEVINFO hDevInfo,
IN PPSETUP_LOCAL_DATA pLocalData,
IN PLATFORM platform,
IN LPCTSTR pszServerName,
IN LPOSVERSIONINFO pOsVersionInfo,
IN HWND hwnd,
IN LPCTSTR pszSource
);
//
// Monitor Installation Functions
//
HANDLE
PSetupCreateMonitorInfo(
IN HWND hwnd,
IN LPCTSTR pszServerName
);
VOID
PSetupDestroyMonitorInfo(
IN OUT HANDLE h
);
BOOL
PSetupEnumMonitor(
IN HANDLE h,
IN DWORD dwIndex,
OUT LPTSTR pMonitorName,
IN OUT LPDWORD pdwSize
);
BOOL
PSetupInstallMonitor(
IN HWND hwnd
);
//
// Following exported for test team's use
//
LPDRIVER_INFO_3
PSetupGetDriverInfo3(
IN PSELECTED_DRV_INFO pDrvInfo
);
VOID
PSetupDestroyDriverInfo3(
IN LPDRIVER_INFO_3 pDriverInfo3
);
BOOL
PSetupFindMappedDriver(
IN BOOL bWinNT,
IN LPCTSTR pszDriverName,
OUT LPTSTR *ppszRemappedDriverName,
OUT BOOL *pbDriverFound
);
//
// For Win9x upgrade
//
BOOL
PSetupAssociateICMProfiles(
IN LPCTSTR pszzICMFiles,
IN LPCTSTR pszPrinterName
);
BOOL
PSetupInstallICMProfiles(
IN LPCTSTR pszServerName,
IN LPCTSTR pszzICMFiles
);
//
// For spooler
//
VOID
PSetupFreeMem(
PVOID p
);
//
// Following are the typdefs for calling GetProcAddress()
//
typedef
HDEVINFO
(*pfPSetupCreatePrinterDeviceInfoList)(
IN HWND hwnd
);
typedef
VOID
(*pfPSetupDestroyPrinterDeviceInfoList)(
IN HDEVINFO h
);
typedef
BOOL
(*pfPSetupSelectDriver)(
IN HDEVINFO h
);
typedef
HPROPSHEETPAGE
(*pfPSetupCreateDrvSetupPage)(
IN HDEVINFO h,
IN HWND hwnd
);
typedef
PPSETUP_LOCAL_DATA
(*pfPSetupGetSelectedDriverInfo)(
IN HDEVINFO h
);
typedef
VOID
(*pfPSetupDestroySelectedDriverInfo)(
IN PPSETUP_LOCAL_DATA pSelectedDrvInfo
);
typedef
DWORD
(*pfPSetupInstallPrinterDriver)(
IN HDEVINFO h,
IN PPSETUP_LOCAL_DATA pSelectedDrvInfo,
IN LPCTSTR pszDriverName,
IN PLATFORM platform,
IN DWORD dwVersion,
IN LPCTSTR pszServerName,
IN HWND hwnd,
IN LPCTSTR pszPlatformName,
IN LPCTSTR pszSourcePath,
IN DWORD dwInstallFlags,
IN DWORD dwAddDrvFlags,
OUT LPTSTR *ppszNewDriverName
);
typedef
BOOL
(*pfPSetupIsDriverInstalled)(
IN LPCTSTR pszServerName,
IN LPCTSTR pszDriverName,
IN PLATFORM platform,
IN DWORD dwMajorVersion
);
typedef
INT
(*pfPSetupIsTheDriverFoundInInfInstalled)(
IN LPCTSTR pszServerName,
IN PPSETUP_LOCAL_DATA pLocalData,
IN PLATFORM platform,
IN DWORD dwMajorVersion
);
typedef
BOOL
(*pfPSetupRefreshDriverList)(
IN HDEVINFO h
);
typedef
PLATFORM
(*pfPSetupThisPlatform)(
VOID
);
typedef
BOOL
(*pfPSetupGetPathToSearch)(
IN HWND hwnd,
IN LPCTSTR pszTitle,
IN LPCTSTR pszDiskName,
IN LPCTSTR pszFileName,
IN BOOL bPromptForInf,
OUT TCHAR szPath[MAX_PATH]
);
typedef
PPSETUP_LOCAL_DATA
(*pfPSetupDriverInfoFromName)(
IN HDEVINFO h,
IN LPCTSTR pszModel
);
typedef
BOOL
(*pfPSetupPreSelectDriver)(
IN HDEVINFO h,
IN LPCTSTR pszManufacturer, OPTIONAL
IN LPCTSTR pszModel OPTIONAL
);
typedef
HANDLE
(*pfPSetupCreateMonitorInfo)(
IN HWND hwnd,
IN LPCTSTR pszServerName
);
typedef
VOID
(*pfPSetupDestroyMonitorInfo)(
IN HANDLE h
);
typedef
BOOL
(*pfPSetupEnumMonitor)(
IN HANDLE h,
IN DWORD dwIndex,
OUT LPTSTR pMonitorName,
IN OUT LPDWORD pdwSize
);
typedef
BOOL
(*pfPSetupInstallMonitor)(
IN HWND hwnd
);
typedef
BOOL
(*pfPSetupProcessPrinterAdded)(
IN HDEVINFO hDevInfo,
IN PPSETUP_LOCAL_DATA pLocalData,
IN LPCTSTR pszPrinterName,
IN HWND hwnd
);
typedef
BOOL
(*pfPSetupBuildDriversFromPath)(
IN HANDLE h,
IN LPCTSTR pszDriverPath,
IN BOOL bEnumSingleInf
);
typedef
BOOL
(*pfPSetupSetSelectDevTitleAndInstructions)(
IN HDEVINFO hDevInfo,
IN LPCTSTR pszTitle,
IN LPCTSTR pszSubTitle,
IN LPCTSTR pszInstn
);
typedef
BOOL
(*pfPSetupSelectDeviceButtons)(
IN HDEVINFO hDevInfo,
IN DWORD dwFlagsSet,
IN DWORD dwFlagsClear
);
typedef
DWORD
(*pfPSetupInstallPrinterDriverFromTheWeb)(
IN HDEVINFO hDevInfo,
IN PPSETUP_LOCAL_DATA pLocalData,
IN PLATFORM platform,
IN LPCTSTR pszServerName,
IN LPOSVERSIONINFO pOsVersionInfo,
IN HWND hwnd,
IN LPCTSTR pszSource
);
typedef
BOOL
(*pfPSetupIsOemDriver)(
IN HDEVINFO hDevInfo,
IN PPSETUP_LOCAL_DATA pLocalData,
IN OUT PBOOL pbIsOemDriver
);
typedef
BOOL
(*pfPSetupGetLocalDataField)(
IN PPSETUP_LOCAL_DATA pLocalData,
IN PLATFORM platform,
IN OUT PDRIVER_FIELD pDrvField
);
typedef
VOID
(*pfPSetupFreeDrvField)(
IN PDRIVER_FIELD pDrvField
);
typedef
BOOL
(*pfPSetupAssociateICMProfiles)(
IN LPCTSTR pszzICMFiles,
IN LPCTSTR pszPrinterName
);
typedef
BOOL
(*pfPSetupInstallICMProfiles)(
IN LPCTSTR pszServerName,
IN LPCTSTR pszzICMFiles
);
typedef
BOOL
(*pfPSetupIsCompatibleDriver)(
IN LPCTSTR pszServer, OPTIONAL
IN LPCTSTR pszDriverModel,
IN LPCTSTR pszDriverPath, // main rendering driver dll
IN LPCTSTR pszEnvironment,
IN DWORD dwVersion,
IN FILETIME *pFileTimeDriver,
OUT DWORD *pdwBlockingStatus,
OUT LPTSTR *ppszReplacementDriver OPTIONAL // caller must free it.
);
typedef
DWORD
(*pfPSetupShowBlockedDriverUI)(
HWND hParentWnd,
DWORD BlockingStatus // can be BSP_PRINTER_DRIVER_BLOCKED or BSP_PRINTER_DRIVER_WARNED, OR'd with BSP_INBOX_REPLACEMENT_AVAILABLE
);
typedef
BOOL
(*pfPSetupFindMappedDriver)(
IN BOOL bWinNT,
IN LPCTSTR pszDriverName,
OUT LPTSTR *ppszRemappedDriverName,
OUT BOOL *pbDriverFound
);
typedef
DWORD
(*pfPSetupInstallInboxDriverSilently)(
IN LPCTSTR pszDriverName
);
typedef
VOID
(*pfPSetupFreeMem)(
PVOID p
);
#ifdef __cplusplus
}
#endif
#endif // #ifndef _SPLSETUP_H