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