681 lines
15 KiB
C
681 lines
15 KiB
C
/*++
|
|
|
|
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
|