You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
273 lines
7.0 KiB
273 lines
7.0 KiB
/*++
|
|
|
|
Copyright (c) 1990-1998 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
WinSpolp.h
|
|
|
|
Abstract:
|
|
|
|
Header file for Print APIs
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
#ifndef _WINSPOLP_
|
|
#define _WINSPOLP_
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#define PRINTER_ATTRIBUTE_UPDATEWININI 0x80000000
|
|
typedef struct _ADDJOB_INFO_2W {
|
|
LPWSTR pData;
|
|
DWORD JobId;
|
|
} ADDJOB_INFO_2W, *PADDJOB_INFO_2W, *LPADDJOB_INFO_2W;
|
|
|
|
#define DRIVER_INFO_PRIVATE_LEVEL 100
|
|
#define DRIVER_INFO_VERSION_LEVEL DRIVER_INFO_PRIVATE_LEVEL + 1
|
|
//
|
|
// You must change RPC_DRIVER_INFCAT_INFO_1 in winspl.idl if you
|
|
// want to change structure DRIVER_INFCAT_INFO_1
|
|
//
|
|
typedef struct _DRIVER_FINFCAT_INFO_1 {
|
|
PCWSTR pszCatPath; // full path to the dirver cat file
|
|
PCWSTR pszCatNameOnSystem; // new cat name used under CatRoot
|
|
} DRIVER_INFCAT_INFO_1;
|
|
|
|
//
|
|
// You must change RPC_DRIVER_INFCAT_INFO_2 in winspl.idl if you
|
|
// want to change structure DRIVER_INFCAT_INFO_2
|
|
//
|
|
typedef struct _DRIVER_INFCAT_INFO_2 {
|
|
PCWSTR pszCatPath; // full path to the dirver cat file
|
|
PCWSTR pszInfPath; // full path to the dirver INF file
|
|
PCWSTR pszSrcLoc; // Information abou the Source Inf
|
|
DWORD dwMediaType; // Source Media Type
|
|
DWORD dwCopyStyle; // Copy Style
|
|
} DRIVER_INFCAT_INFO_2;
|
|
|
|
typedef enum {
|
|
DRIVER_FILE = 0,
|
|
CONFIG_FILE = 1,
|
|
DATA_FILE = 2,
|
|
HELP_FILE = 3,
|
|
DEPENDENT_FILE = 4
|
|
} DRIVER_FILE_TYPE;
|
|
|
|
typedef struct _DRIVER_FILE_INFO {
|
|
DWORD FileNameOffset;
|
|
DRIVER_FILE_TYPE FileType;
|
|
DWORD FileVersion;
|
|
} DRIVER_FILE_INFO, *PDRIVER_FILE_INFO, *LPDRIVER_FILE_INFO;
|
|
|
|
typedef struct _DRIVER_INFO_VERSION {
|
|
DWORD cVersion;
|
|
LPWSTR pName;
|
|
LPWSTR pEnvironment;
|
|
LPDRIVER_FILE_INFO pFileInfo;
|
|
DWORD dwFileCount;
|
|
LPWSTR pMonitorName;
|
|
LPWSTR pDefaultDataType;
|
|
LPWSTR pszzPreviousNames;
|
|
FILETIME ftDriverDate;
|
|
DWORDLONG dwlDriverVersion;
|
|
LPWSTR pszMfgName;
|
|
LPWSTR pszOEMUrl;
|
|
LPWSTR pszHardwareID;
|
|
LPWSTR pszProvider;
|
|
} DRIVER_INFO_VERSION, *PDRIVER_INFO_VERSION, *LPDRIVER_INFO_VERSION;
|
|
#define APD_DONT_COPY_FILES_TO_CLUSTER 0x00001000
|
|
#define APD_COPY_TO_ALL_SPOOLERS 0x00002000
|
|
#define APD_NO_UI 0x00004000
|
|
#define APD_INSTALL_WARNED_DRIVER 0x00008000
|
|
#define APD_RETURN_BLOCKING_STATUS_CODE 0x00010000
|
|
#define APD_DONT_SET_CHECKPOINT 0x00020000
|
|
|
|
// FLAGS for AddDriverCatalog
|
|
#define APDC_NONE 0x00000000
|
|
#define APDC_USE_ORIGINAL_CAT_NAME 0x00000001
|
|
#define EPD_ALL_LOCAL_AND_CLUSTER TEXT("AllCluster")
|
|
//Internal for printprocessor interface
|
|
#define DI_CHANNEL_WRITE 2 // Direct write only - background read thread ok
|
|
#define PRINTER_ENUM_CLUSTER 0x00000800
|
|
typedef struct _SPOOL_FILE_INFO_1 {
|
|
DWORD dwVersion;
|
|
HANDLE hSpoolFile;
|
|
DWORD dwAttributes;
|
|
} SPOOL_FILE_INFO_1, *PSPOOL_FILE_INFO_1;
|
|
HANDLE
|
|
WINAPI
|
|
GetSpoolFileHandle(
|
|
HANDLE hPrinter
|
|
);
|
|
|
|
HANDLE
|
|
WINAPI
|
|
CommitSpoolData(
|
|
HANDLE hPrinter,
|
|
HANDLE hSpoolFile,
|
|
DWORD cbCommit
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
CloseSpoolFileHandle(
|
|
HANDLE hPrinter,
|
|
HANDLE hSpoolFile
|
|
);
|
|
BOOL
|
|
WINAPI
|
|
AddDriverCatalog(
|
|
IN HANDLE hPrinter,
|
|
IN DWORD Level,
|
|
IN VOID *pvDriverInfCatInfo,
|
|
IN DWORD dwCatalogCopyFiles
|
|
);
|
|
BOOL
|
|
WINAPI
|
|
AddPerMachineConnectionA(
|
|
IN LPCSTR pServer,
|
|
IN LPCSTR pPrinterName,
|
|
IN LPCSTR pPrintServer,
|
|
IN LPCSTR pProvider
|
|
);
|
|
BOOL
|
|
WINAPI
|
|
AddPerMachineConnectionW(
|
|
IN LPCWSTR pServer,
|
|
IN LPCWSTR pPrinterName,
|
|
IN LPCWSTR pPrintServer,
|
|
IN LPCWSTR pProvider
|
|
);
|
|
#ifdef UNICODE
|
|
#define AddPerMachineConnection AddPerMachineConnectionW
|
|
#else
|
|
#define AddPerMachineConnection AddPerMachineConnectionA
|
|
#endif // !UNICODE
|
|
|
|
BOOL
|
|
WINAPI
|
|
DeletePerMachineConnectionA(
|
|
IN LPCSTR pServer,
|
|
IN LPCSTR pPrinterName
|
|
);
|
|
BOOL
|
|
WINAPI
|
|
DeletePerMachineConnectionW(
|
|
IN LPCWSTR pServer,
|
|
IN LPCWSTR pPrinterName
|
|
);
|
|
#ifdef UNICODE
|
|
#define DeletePerMachineConnection DeletePerMachineConnectionW
|
|
#else
|
|
#define DeletePerMachineConnection DeletePerMachineConnectionA
|
|
#endif // !UNICODE
|
|
|
|
BOOL
|
|
WINAPI
|
|
EnumPerMachineConnectionsA(
|
|
IN LPCSTR pServer,
|
|
OUT LPBYTE pPrinterEnum,
|
|
IN DWORD cbBuf,
|
|
OUT LPDWORD pcbNeeded,
|
|
OUT LPDWORD pcReturned
|
|
);
|
|
BOOL
|
|
WINAPI
|
|
EnumPerMachineConnectionsW(
|
|
IN LPCWSTR pServer,
|
|
OUT LPBYTE pPrinterEnum,
|
|
IN DWORD cbBuf,
|
|
OUT LPDWORD pcbNeeded,
|
|
OUT LPDWORD pcReturned
|
|
);
|
|
#ifdef UNICODE
|
|
#define EnumPerMachineConnections EnumPerMachineConnectionsW
|
|
#else
|
|
#define EnumPerMachineConnections EnumPerMachineConnectionsA
|
|
#endif // !UNICODE
|
|
BOOL
|
|
WINAPI
|
|
SeekPrinter(
|
|
IN HANDLE hPrinter,
|
|
IN LARGE_INTEGER liDistanceToMove,
|
|
OUT PLARGE_INTEGER pliNewPointer,
|
|
IN DWORD dwMoveMethod,
|
|
IN BOOL bWrite
|
|
);
|
|
BOOL
|
|
WINAPI
|
|
SplReadPrinter(
|
|
HANDLE hPrinter,
|
|
LPBYTE *pBuf,
|
|
DWORD cbBuf
|
|
);
|
|
BOOL
|
|
WINAPI
|
|
EnumPrinterPropertySheets(
|
|
IN HANDLE hPrinter,
|
|
IN HWND hWnd,
|
|
IN LPFNADDPROPSHEETPAGE lpfnAdd,
|
|
IN LPARAM lParam
|
|
);
|
|
|
|
#define ENUMPRINTERPROPERTYSHEETS_ORD 100
|
|
BOOL
|
|
WINAPI
|
|
PublishPrinterA(
|
|
IN HWND hwnd,
|
|
IN LPCSTR pszUNCName,
|
|
IN LPCSTR pszDN,
|
|
IN LPCSTR pszCN,
|
|
OUT LPSTR *ppszDN,
|
|
IN DWORD dwAction
|
|
);
|
|
|
|
BOOL
|
|
WINAPI
|
|
PublishPrinterW(
|
|
IN HWND hwnd,
|
|
IN LPCWSTR pszUNCName,
|
|
IN LPCWSTR pszDN,
|
|
IN LPCWSTR pszCN,
|
|
OUT LPWSTR *ppszDN,
|
|
IN DWORD dwAction
|
|
);
|
|
|
|
#define PUBLISHPRINTER_QUERY 1
|
|
#define PUBLISHPRINTER_DELETE_DUPLICATES 2
|
|
#define PUBLISHPRINTER_FAIL_ON_DUPLICATE 3
|
|
#define PUBLISHPRINTER_IGNORE_DUPLICATES 4
|
|
BOOL
|
|
ClusterSplOpen(
|
|
IN LPCTSTR pszServer,
|
|
IN LPCTSTR pszResource,
|
|
OUT PHANDLE phSpooler,
|
|
IN LPCTSTR pszName,
|
|
IN LPCTSTR pszAddress
|
|
);
|
|
|
|
BOOL
|
|
ClusterSplClose(
|
|
IN HANDLE hSpooler
|
|
);
|
|
|
|
BOOL
|
|
ClusterSplIsAlive(
|
|
IN HANDLE hSpooler
|
|
);
|
|
#define SPLREG_NO_REMOTE_PRINTER_DRIVERS TEXT("NoRemotePrinterDrivers")
|
|
#define SPLREG_NON_RAW_TO_MASQ_PRINTERS TEXT("NonRawToMasqPrinters")
|
|
#define SPLREG_CHANGE_ID TEXT("ChangeId")
|
|
#define SPLREG_CLUSTER_LOCAL_ROOT_KEY TEXT("Software\\Microsoft\\Windows NT\\CurrentVersion\\Print\\Cluster")
|
|
#define SPLREG_CLUSTER_UPGRADE_KEY TEXT("ClusterUpgrade")
|
|
#define SPLREG_CLUSTER_DRIVER_DIRECTORY TEXT("ClusterDriverDirectory")
|
|
BOOL
|
|
SpoolerInit(
|
|
VOID
|
|
);
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // _WINSPOLP_
|