windows-nt/Source/XPSP1/NT/public/internal/printscan/inc/printui.h
2020-09-26 16:20:57 +08:00

161 lines
8.3 KiB
C

/*++
Copyright (c) 1990-1996 Microsoft Corporation
All rights reserved
Module Name:
printui.h
Abstract:
Plug and Play interface printui.dll and ntprint.dll.
Author:
Steve Kiraly (SteveKi) 30-Oct-1996
Environment:
User Mode - Win32
Revision History:
--*/
#ifndef _PRINTUI_H
#define _PRINTUI_H
typedef enum {
kAdvInf_ColorPrinter = 1 << 0, // The PnpInterface installed a color printer
} EAdvInfReturnFlags;
typedef enum {
kPnPInterface_WebPointAndPrint = 1 << 0, // Web point and print install
kPnPInterface_PromptForCD = 1 << 1, // Prompt for cd
kPnPInterface_Quiet = 1 << 2, // No error messages
kPnPInterface_NoShare = 1 << 3, // Do not share printer
kPnpInterface_UseExisting = 1 << 4, // Use driver if installed (Hydra)
kPnpInterface_PromptIfUnknownDriver = 1 << 5, // Prompt user if the printer driver is not known
kPnPInterface_PromptIfFileNeeded = 1 << 6, // Prompt if files are needed
kPnpInterface_HydraSpecific = 1 << 7, // Hydra specific flag
kPnPInterface_Share = 1 << 8, // Caller wants the printer shared
kPnPInterface_WindowsUpdate = 1 << 9, // Windows Update case
kPnPInterface_DontAutoGenerateName = 1 << 10, // Don't auto generate mangled printer name
kPnPInterface_UseNonLocalizedStrings= 1 << 11, // Use non localized Environment and Version
kPnPInterface_SupressSetupUI = 1 << 12, // Supress setup warnings UI (super quiet mode)
kPnPInterface_InstallColorProfiles = 1 << 13 // Install ICM for color printer drivers
} EPnPInterfaceFlags;
typedef enum {
kPrinterInstall, // Do printer quite install
kInstallWizard, // Do install wizard
kDestroyWizardData, // Do destroy wizard data
kInfInstall, // Do inf installation
kInfDriverInstall, // Do inf driver installation
kDriverRemoval, // Do driver removal
kAdvInfInstall // Do Inf Install with extras.
} EPnPFunctionCode;
typedef struct _TPrinterInstall {
UINT cbSize; // Size of this structure for validation purposes
LPCTSTR pszServerName; // Machine name NULL equals local machine
LPCTSTR pszDriverName; // Pointer to printer driver name.
LPCTSTR pszPortName; // Name of port to install
LPTSTR pszPrinterNameBuffer; // Buffer where to return fully qualified printer name.
UINT cchPrinterName; // Size of printer name buffer in characters
} TPrinterInstall;
typedef struct _TInstallWizard {
UINT cbSize; // Size of this structure for validation
LPCTSTR pszServerName; // Machine name NULL equals local machine
PSP_INSTALLWIZARD_DATA pData; // Pointer to install wizard data
PVOID pReferenceData; // Class installer instance data
} TInstallWizard;
typedef struct _TDestroyWizard {
UINT cbSize; // Size of this structure for validation purposes
LPCTSTR pszServerName; // Machine name NULL equals local machine
PSP_INSTALLWIZARD_DATA pData; // Pointer to install wizard data
PVOID pReferenceData; // Class installer instance data
} TDestroyWizard;
typedef struct _TInfInstall {
UINT cbSize; // Size of this structure for validation purposes
LPCTSTR pszServerName; // Machine name NULL equals local machine
LPCTSTR pszInfName; // Name of INF file including full path
LPCTSTR pszModelName; // Model name of printer in inf to install
LPCTSTR pszPortName; // Port name where to install printer
LPTSTR pszPrinterNameBuffer; // Base printer name, Note if a printer exists
// with this name a unique name will be
// generated ie. "printer (Copy 1)". This parameter
// may contain the null string in which case the printer
// name will be auto generated using the model name
// as the base name. This parameter can be null,
// and the new name will not be copied back
UINT cchPrinterName; // Size of printer name buffer in characters
LPCTSTR pszSourcePath; // Printer driver sources path
DWORD dwFlags; // Install flags
} TInfInstall;
typedef struct _TAdvInfInstall {
UINT cbSize; // Size of this structure for validation purposes
LPCTSTR pszServerName; // Machine name NULL equals local machine
LPCTSTR pszInfName; // Name of INF file including full path
LPCTSTR pszModelName; // Model name of printer in inf to install
LPCTSTR pszPortName; // Port name where to install printer
LPTSTR pszPrinterNameBuffer; // Base printer name, Note if a printer exists
// with this name a unique name will be
// generated ie. "printer (Copy 1)". This parameter
// may contain the null string in which case the printer
// name will be auto generated using the model name
// as the base name. This parameter can be null,
// and the new name will not be copied back
UINT cchPrinterName; // Size of printer name buffer in characters
LPCTSTR pszSourcePath; // Printer driver sources path
DWORD dwFlags; // Install flags
DWORD dwAttributes; // Printer install attributes
PSECURITY_DESCRIPTOR pSecurityDescriptor; // Security Descriptor to set.
DWORD dwOutFlags; // A set of flags to be returned back to our caller.
} TAdvInfInstall;
typedef struct _TInfDriverInstall {
UINT cbSize; // Size of this structure for validation purposes
LPCTSTR pszServerName; // Machine name NULL equals local machine
LPCTSTR pszInfName; // Name of INF file including full path
LPCTSTR pszModelName; // Model name of printer in inf to install
LPCTSTR pszSourcePath; // Printer driver sources path
LPCTSTR pszArchitecture; // Architecture string
LPCTSTR pszVersion; // Driver version string
DWORD dwFlags; // Install flags
} TInfDriverInstall;
typedef struct _TDriverRemoval {
UINT cbSize; // Size of this structure for validation purposes
LPCTSTR pszServerName; // Machine name NULL equals local machine
LPCTSTR pszModelName; // Model name of printer in inf to install
LPCTSTR pszArchitecture; // Architecture string
LPCTSTR pszVersion; // Driver version string
DWORD dwFlags; // Removal flags
} TDriverRemoval;
typedef union _TParameterBlock {
TPrinterInstall *pPrinterInstall; // Pointer to printer install wizard
TInstallWizard *pInstallWizard; // Pointer to install wizard data
TDestroyWizard *pDestroyWizard; // Pointer to destroy wizard data
TInfInstall *pInfInstall; // Pointer to inf install data
TAdvInfInstall *pAdvInfInstall; // Pointer to advanced inf install data
TInfDriverInstall *pInfDriverInstall; // Pointer to inf driver install data
TDriverRemoval *pDriverRemoval; // Pointer to driver removal data
} TParameterBlock;
DWORD
PnPInterface(
IN EPnPFunctionCode Function, // Function code
IN TParameterBlock *pParameterBlock // Pointer to parameter block
);
#endif