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

822 lines
18 KiB
C

/*++
Copyright (c) 1990-1994 Microsoft Corporation
Module Name:
SplApiP.h
Abstract:
Header file for Private Print APIs
For use in stress
Author:
Matthew Felton (MattFe) 4-Mar-1994
Revision History:
--*/
#ifndef SPLAPIP_H_
#define SPLAPIP_H_
#ifdef __cplusplus
extern "C" {
#endif
#include "lmon.h"
// Internal Used to report Stress test results
#define STRESSINFOLEVEL 0
// W A R N I N G
//
// Do not alter the size of this structure it will break NT interop with older releases if you do.
typedef struct _PRINTER_INFO_STRESSA {
LPSTR pPrinterName; // Printer Name locally "Printername" remotely "\\servername\printername"
LPSTR pServerName; // Server Name
DWORD cJobs; // Number of Jobs currently in Print Queue
DWORD cTotalJobs; // Total Number of Jobs spooled
DWORD cTotalBytes; // Total Bytes Printed (LOW DWORD)
SYSTEMTIME stUpTime; // Time printed data structure crated UTC
DWORD MaxcRef; // Maximum number of cRef
DWORD cTotalPagesPrinted; // Total number of pages printed
DWORD dwGetVersion; // OS version
DWORD fFreeBuild; // TRUE for free build
DWORD cSpooling; // Number of jobs actively spooling
DWORD cMaxSpooling; // Maximum number of cSpooling
DWORD cRef; // Printer object reference count (opened)
DWORD cErrorOutOfPaper; // Total Number of Out Of Paper Errors
DWORD cErrorNotReady; // Total Number of Error Not Ready
DWORD cJobError; // Total number of Job Errors
DWORD dwNumberOfProcessors; // Number of Processors on computer
DWORD dwProcessorType; // Processor Type of computer
DWORD dwHighPartTotalBytes; // Total Bytes Printed (HIGH DWORD)
DWORD cChangeID; // Count of Changes to Printer Config
DWORD dwLastError; // Last Error
DWORD Status; // Current Printer Status
DWORD cEnumerateNetworkPrinters; // Count How Many Times Browse List Requested
DWORD cAddNetPrinters; // Count of NetPrinters Added ( Browser )
WORD wProcessorArchitecture; // Processor Architecture of computer
WORD wProcessorLevel; // Processor Level of computer
DWORD cRefIC; // Count of open IC handles
DWORD dwReserved2; // Reserved for Future Use
DWORD dwReserved3;
} PRINTER_INFO_STRESSA, *PPRINTER_INFO_STRESSA, *LPPRINTER_INFO_STRESSA;
typedef struct _PRINTER_INFO_STRESSW {
LPWSTR pPrinterName; // Printer Name locally "Printername" remotely "\\servername\printername"
LPWSTR pServerName; // Server Name
DWORD cJobs; // Number of Jobs currently in Print Queue
DWORD cTotalJobs; // Total Number of Jobs spooled
DWORD cTotalBytes; // Total Bytes Printed (LOW DWORD)
SYSTEMTIME stUpTime; // Time printed data structure crated UTC
DWORD MaxcRef; // Maximum number of cRef
DWORD cTotalPagesPrinted; // Total number of pages printed
DWORD dwGetVersion; // OS version
DWORD fFreeBuild; // TRUE for free build
DWORD cSpooling; // Number of jobs actively spooling
DWORD cMaxSpooling; // Maximum number of cSpooling
DWORD cRef; // Printer object reference count (opened)
DWORD cErrorOutOfPaper; // Total Number of Out Of Paper Errors
DWORD cErrorNotReady; // Total Number of Error Not Ready
DWORD cJobError; // Total number of Job Errors
DWORD dwNumberOfProcessors; // Number of Processors on computer
DWORD dwProcessorType; // Processor Type of computer
DWORD dwHighPartTotalBytes; // Total Bytes Printed (HIGH DWORD)
DWORD cChangeID; // Count of Changes to Printer Config
DWORD dwLastError; // Last Error
DWORD Status; // Current Printer Status
DWORD cEnumerateNetworkPrinters; // Count How Many Times Browse List Requested
DWORD cAddNetPrinters; // Count of NetPrinters Added ( Browser )
WORD wProcessorArchitecture; // Processor Architecture of computer
WORD wProcessorLevel; // Processor Level of computer
DWORD cRefIC; // Count of open IC handles
DWORD dwReserved2; // Reserved for Future Use
DWORD dwReserved3;
} PRINTER_INFO_STRESSW, *PPRINTER_INFO_STRESSW, *LPPRINTER_INFO_STRESSW;
typedef struct _DRIVER_UPGRADE_INFO_1W {
LPWSTR pPrinterName; // Printer Name being upgraded
LPWSTR pOldDriverDirectory; // fully qualified path to old printer driver
} DRIVER_UPGRADE_INFO_1W, *PDRIVER_UPGRADE_INFO_1W, *LPDRIVER_UPGRADE_INFO_1W;
#ifdef UNICODE
#define PRINTER_INFO_STRESS PRINTER_INFO_STRESSW
#define PPRINTER_INFO_STRESS PPRINTER_INFO_STRESSW
#define LPPRINTER_INFO_STRESS LPPRINTER_INFO_STRESSW
#else
#define PRINTER_INFO_STRESS PRINTER_INFO_STRESSA
#define PPRINTER_INFO_STRESS PPRINTER_INFO_STRESSA
#define LPPRINTER_INFO_STRESS LPPRINTER_INFO_STRESSA
#endif // UNICODE
BOOL
AddPortExW(
LPWSTR pName,
DWORD Level,
LPBYTE lpBuffer,
LPWSTR lpMonitorName
);
BOOL
AddPortExA(
LPSTR pName,
DWORD Level,
LPBYTE lpBuffer,
LPSTR lpMonitorName
);
BOOL
SetAllocFailCount(
HANDLE hPrinter,
DWORD dwFailCount,
LPDWORD lpdwAllocCount,
LPDWORD lpdwFreeCount,
LPDWORD lpdwFailCountHit
);
#ifdef UNICODE
#define AddPortEx AddPortExW
#else
#define AddPortEx AddPortExA
#endif // !UNICODE
//
// Interfaces to Spooler APIs
//
HANDLE
SplAddPrinter(
LPWSTR pName,
DWORD Level,
LPBYTE pPrinter,
HANDLE pIniSpooler,
LPBYTE pExtraData,
LPBYTE pSplClientInfo,
DWORD dwLevel
);
BOOL
SplDeletePrinter(
HANDLE hPrinter
);
BOOL
SplEnumPrinters(
DWORD Flags,
LPWSTR Name,
DWORD Level,
LPBYTE pPrinter,
DWORD cbBuf,
LPDWORD pcbNeeded,
LPDWORD pcReturned,
HANDLE pIniSpooler
);
DWORD
SplOpenPrinter(
LPWSTR pPrinterName,
LPHANDLE phPrinter,
LPPRINTER_DEFAULTS pDefault,
HANDLE pIniSpooler,
LPBYTE pSplClientInfo,
DWORD dwLevel
);
BOOL
SplDeletePrinterDriver(
LPWSTR pName,
LPWSTR pEnvironment,
LPWSTR pDriverName,
HANDLE pIniSpooler
);
BOOL
SplDeletePrinterDriverEx(
LPWSTR pName,
LPWSTR pEnvironment,
LPWSTR pDriverName,
HANDLE pIniSpooler,
DWORD dwDeleteFlag,
DWORD dwVersionNum
);
BOOL
SplGetPrintProcessorDirectory(
LPWSTR pName,
LPWSTR pEnvironment,
DWORD Level,
LPBYTE pPrintProcessorInfo,
DWORD cbBuf,
LPDWORD pcbNeeded,
HANDLE pIniSpooler
);
BOOL
SplGetPrinterDriverDirectory(
LPWSTR pName,
LPWSTR pEnvironment,
DWORD Level,
LPBYTE pDriverInfo,
DWORD cbBuf,
LPDWORD pcbNeeded,
HANDLE pIniSpooler
);
BOOL
SplAddPort(
LPWSTR pName,
HWND hWnd,
LPWSTR pMonitorName,
HANDLE pIniSpooler
);
BOOL
SplAddPortEx(
LPWSTR pName,
DWORD Level,
LPVOID pBuffer,
LPWSTR pMonitorName,
HANDLE pIniSpooler
);
BOOL
SplAddPrinterDriver(
LPWSTR pName,
DWORD Level,
LPBYTE pDriverInfo,
HANDLE pIniSpooler,
BOOL bUseScratchDir,
BOOL bImpersonateOnCreate
);
BOOL
SplAddPrinterDriverEx(
LPWSTR pName,
DWORD Level,
LPBYTE pDriverInfo,
DWORD dwFileCopyFlags,
HANDLE pIniSpooler,
BOOL bUseScratchDir,
BOOL bImpersonateOnCreate
);
BOOL
SplAddDriverCatalog(
HANDLE hPrinter,
DWORD dwLevel,
VOID *pvDriverInfCatInfo,
DWORD dwCatalogCopyFlags
);
BOOL
SplDeleteMonitor(
LPWSTR pName,
LPWSTR pEnvironment,
LPWSTR pMonitorName,
HANDLE pIniSpooler
);
BOOL
SplDeletePrintProcessor(
LPWSTR pName,
LPWSTR pEnvironment,
LPWSTR pPrintProcessorName,
HANDLE pIniSpooler
);
BOOL
SplAddPrintProcessor(
LPWSTR pName,
LPWSTR pEnvironment,
LPWSTR pPathName,
LPWSTR pPrintProcessorName,
HANDLE pIniSpooler
);
BOOL
SplAddMonitor(
LPWSTR pName,
DWORD Level,
LPBYTE pMonitorInfo,
HANDLE pIniSpooler
);
BOOL
SplMonitorIsInstalled(
LPWSTR pMonitorName
);
BOOL
SplDeletePort(
LPWSTR pName,
HWND hWnd,
LPWSTR pPortName,
HANDLE pIniSpooler
);
BOOL
SplEnumPorts(
LPWSTR pName,
DWORD Level,
LPBYTE pPorts,
DWORD cbBuf,
LPDWORD pcbNeeded,
LPDWORD pcReturned,
HANDLE pIniSpooler
);
BOOL
SplConfigurePort(
LPWSTR pName,
HWND hWnd,
LPWSTR pPortName,
HANDLE pIniSpooler
);
BOOL
SplXcvData(
HANDLE hXcv,
LPCWSTR pszDataName,
PBYTE pInputData,
DWORD cbInputData,
PBYTE pOutputData,
DWORD cbOutputData,
PDWORD pcbOutputNeeded,
PDWORD pdwStatus,
HANDLE pIniSpooler
);
BOOL
SplEnumMonitors(
LPWSTR pName,
DWORD Level,
LPBYTE pMonitors,
DWORD cbBuf,
LPDWORD pcbNeeded,
LPDWORD pcReturned,
HANDLE pIniSpooler
);
BOOL
SplEnumPrinterDrivers(
LPWSTR pName,
LPWSTR pEnvironment,
DWORD Level,
LPBYTE pDriverInfo,
DWORD cbBuf,
LPDWORD pcbNeeded,
LPDWORD pcReturned,
HANDLE pIniSpooler
);
BOOL
SplEnumPrintProcessors(
LPWSTR pName,
LPWSTR pEnvironment,
DWORD Level,
LPBYTE pPrintProcessorInfo,
DWORD cbBuf,
LPDWORD pcbNeeded,
LPDWORD pcReturned,
HANDLE pIniSpooler
);
BOOL
SplEnumPrintProcessorDatatypes(
LPWSTR pName,
LPWSTR pPrintProcessorName,
DWORD Level,
LPBYTE pDatatypes,
DWORD cbBuf,
LPDWORD pcbNeeded,
LPDWORD pcReturned,
HANDLE pIniSpooler
);
VOID
SplBroadcastChange(
HANDLE hPrinter,
DWORD Message,
WPARAM wParam,
LPARAM lParam
);
typedef struct _SPOOLER_INFO_1 {
LPWSTR pDir;
LPWSTR pDefaultSpoolDir;
LPWSTR pszRegistryRoot;
LPWSTR pszRegistryPrinters;
LPWSTR pszRegistryMonitors;
LPWSTR pszRegistryEnvironments;
LPWSTR pszRegistryEventLog;
LPWSTR pszRegistryProviders;
LPWSTR pszEventLogMsgFile;
LPWSTR pszDriversShare;
LPWSTR pszRegistryForms;
DWORD SpoolerFlags;
FARPROC pfnReadRegistryExtra;
FARPROC pfnWriteRegistryExtra;
FARPROC pfnFreePrinterExtra;
} SPOOLER_INFO_1, *PSPOOLER_INFO_1, *LPSPOOLER_INFO_1;
typedef struct _SPOOLER_INFO_2 {
LPWSTR pDir;
LPWSTR pDefaultSpoolDir;
LPWSTR pszRegistryRoot;
LPWSTR pszRegistryPrinters;
LPWSTR pszRegistryMonitors;
LPWSTR pszRegistryEnvironments;
LPWSTR pszRegistryEventLog;
LPWSTR pszRegistryProviders;
LPWSTR pszEventLogMsgFile;
LPWSTR pszDriversShare;
LPWSTR pszRegistryForms;
DWORD SpoolerFlags;
FARPROC pfnReadRegistryExtra;
FARPROC pfnWriteRegistryExtra;
FARPROC pfnFreePrinterExtra;
LPWSTR pszResource;
LPWSTR pszName;
LPWSTR pszAddress;
} SPOOLER_INFO_2, *PSPOOLER_INFO_2, *LPSPOOLER_INFO_2;
#define SPL_UPDATE_WININI_DEVICES 0x00000001
#define SPL_PRINTER_CHANGES 0x00000002
#define SPL_LOG_EVENTS 0x00000004
#define SPL_FORMS_CHANGE 0x00000008
#define SPL_BROADCAST_CHANGE 0x00000010
#define SPL_SECURITY_CHECK 0x00000020
#define SPL_OPEN_CREATE_PORTS 0x00000040
#define SPL_FAIL_OPEN_PRINTERS_PENDING_DELETION 0x00000080
#define SPL_REMOTE_HANDLE_CHECK 0x00000100
#define SPL_PRINTER_DRIVER_EVENT 0x00000200
#define SPL_ALWAYS_CREATE_DRIVER_SHARE 0x00000400
#define SPL_NO_UPDATE_PRINTERINI 0x00000800
#define SPL_NO_UPDATE_JOBSHD 0x00001000
#define SPL_CLUSTER_REG 0x00002000
#define SPL_OFFLINE 0x00004000
#define SPL_PENDING_DELETION 0x00008000
#define SPL_SERVER_THREAD 0x00010000
#define SPL_PRINT 0x00020000
#define SPL_NON_RAW_TO_MASQ_PRINTERS 0x00040000
#define SPL_OPEN_EXISTING_ONLY 0x00080000
#define SPL_TYPE 0xff000000
#define SPL_TYPE_LOCAL 0x01000000
#define SPL_TYPE_CLUSTER 0x02000000
#define SPL_TYPE_CACHE 0x04000000
HANDLE
SplCreateSpooler(
LPWSTR pMachineName,
DWORD Level,
PBYTE pSpooler,
LPBYTE pReserved
);
BOOL
SplDeleteSpooler(
HANDLE hSpooler
);
BOOL
SplCloseSpooler(
HANDLE hSpooler
);
BOOL
SplEnumForms(
HANDLE hPrinter,
DWORD Level,
LPBYTE pForm,
DWORD cbBuf,
LPDWORD pcbNeeded,
LPDWORD pcReturned
);
BOOL
SplAddForm(
HANDLE hPrinter,
DWORD Level,
LPBYTE pForm
);
BOOL
SplDeleteForm(
HANDLE hPrinter,
LPWSTR pFormName
);
BOOL
SplGetForm(
HANDLE hPrinter,
LPWSTR pFormName,
DWORD Level,
LPBYTE pForm,
DWORD cbBuf,
LPDWORD pcbNeeded
);
BOOL
SplSetForm(
HANDLE hPrinter,
LPWSTR pFormName,
DWORD Level,
LPBYTE pForm
);
BOOL
SplClosePrinter(
HANDLE hPrinter
);
DWORD
SplGetPrinterData(
HANDLE hPrinter,
LPWSTR pValueName,
LPDWORD pType,
LPBYTE pData,
DWORD nSize,
LPDWORD pcbNeeded
);
DWORD
SplGetPrinterDataEx(
HANDLE hPrinter,
LPCWSTR pKeyName,
LPCWSTR pValueName,
LPDWORD pType,
LPBYTE pData,
DWORD nSize,
LPDWORD pcbNeeded
);
DWORD
SplEnumPrinterData(
HANDLE hPrinter,
DWORD dwIndex, // index of value to query
LPWSTR pValueName, // address of buffer for value string
DWORD cbValueName, // size of buffer for value string
LPDWORD pcbValueName, // address for size of value buffer
LPDWORD pType, // address of buffer for type code
LPBYTE pData, // address of buffer for value data
DWORD cbData, // size of buffer for value data
LPDWORD pcbData // address for size of data buffer
);
DWORD
SplEnumPrinterDataEx(
HANDLE hPrinter,
LPCWSTR pKeyName,
LPBYTE pEnumValues,
DWORD cbEnumValues,
LPDWORD pcbEnumValues,
LPDWORD pnEnumValues
);
DWORD
SplEnumPrinterKey(
HANDLE hPrinter,
LPCWSTR pKeyName,
LPWSTR pSubkey, // address of buffer for value string
DWORD cbSubkey, // size of buffer for value string
LPDWORD pcbSubkey // address for size of value buffer
);
DWORD
SplDeletePrinterData(
HANDLE hPrinter,
LPWSTR pValueName
);
DWORD
SplDeletePrinterDataEx(
HANDLE hPrinter,
LPCWSTR pKeyName,
LPCWSTR pValueName
);
DWORD
SplDeletePrinterKey(
HANDLE hPrinter,
LPCWSTR pKeyName
);
DWORD
SplSetPrinterData(
HANDLE hPrinter,
LPWSTR pValueName,
DWORD Type,
LPBYTE pData,
DWORD cbData
);
DWORD
SplSetPrinterDataEx(
HANDLE hPrinter,
LPCWSTR pKeyName,
LPCWSTR pValueName,
DWORD Type,
LPBYTE pData,
DWORD cbData
);
BOOL
SplGetPrinterDriver(
HANDLE hPrinter,
LPWSTR pEnvironment,
DWORD Level,
LPBYTE pDriverInfo,
DWORD cbBuf,
LPDWORD pcbNeeded
);
BOOL
SplGetPrinterDriverEx(
HANDLE hPrinter,
LPWSTR pEnvironment,
DWORD Level,
LPBYTE pDriverInfo,
DWORD cbBuf,
LPDWORD pcbNeeded,
DWORD dwClientMajorVersion,
DWORD dwClientMinorVersion,
PDWORD pdwServerMajorVersion,
PDWORD pdwServerMinorVersion
);
BOOL
SplResetPrinter(
HANDLE hPrinter,
LPPRINTER_DEFAULTSW pDefault
);
BOOL
SplGetPrinter(
HANDLE hPrinter,
DWORD Level,
LPBYTE pPrinter,
DWORD cbBuf,
LPDWORD pcbNeeded
);
BOOL
SplSetPrinter(
HANDLE hPrinter,
DWORD Level,
LPBYTE pPrinterInfo,
DWORD Command
);
BOOL
SplSetPrinterExtra(
HANDLE hPrinter,
LPBYTE pExtraData
);
BOOL
SplGetPrinterExtra(
HANDLE hPrinter,
PBYTE *ppExtraData
);
BOOL
SplSetPrinterExtraEx(
HANDLE hPrinter,
DWORD dwPrivateFlag
);
BOOL
SplGetPrinterExtraEx(
HANDLE hPrinter,
LPDWORD pdwPrivateFlag
);
BOOL
SplDriverEvent(
LPWSTR pName,
INT PrinterEvent,
LPARAM lParam
);
BOOL
SplCopyNumberOfFiles(
LPWSTR pszPrinterName,
LPWSTR *ppszSourceFileNames,
DWORD dwCount,
LPWSTR pszTargetDir,
LPBOOL pbFilesAddedOrUpdated
);
BOOL
SplGetDriverDir(
HANDLE hIniSpooler,
LPWSTR pszDir,
LPDWORD pcchDir
);
HMODULE
SplLoadLibraryTheCopyFileModule(
HANDLE hPrinter,
LPWSTR pszModule
);
BOOL
SplCopyFileEvent(
HANDLE hPrinter,
LPWSTR pszKey,
DWORD dwCopyFileEvent
);
VOID
SplDriverUnloadComplete(
LPWSTR pDriverFile
);
BOOL
SplGetSpoolFileInfo(
HANDLE hPrinter,
HANDLE hAppProcess,
DWORD dwLevel,
LPBYTE pSpoolFileInfo,
DWORD cbBuf,
LPDWORD pcbNeeded
);
BOOL
SplCommitSpoolData(
HANDLE hPrinter,
HANDLE hAppProcess,
DWORD cbCommit,
DWORD dwLevel,
LPBYTE pSpoolFileInfo,
DWORD cbBuf,
LPDWORD pcbNeeded
);
BOOL
SplCloseSpoolFileHandle(
HANDLE hPrinter
);
BOOL
bGetDevModePerUser(
HKEY hKeyUser,
LPCWSTR pszPrinter,
PDEVMODE *ppDevMode
);
BOOL
bSetDevModePerUser(
HKEY hKeyUser,
LPCWSTR pszPrinter,
PDEVMODE pDevMode
);
DWORD
SendRecvBidiData(
IN HANDLE hPrinter,
IN LPCWSTR pAction,
IN PBIDI_REQUEST_CONTAINER pReqData,
OUT PBIDI_RESPONSE_CONTAINER* ppResData
);
#ifdef __cplusplus
}
#endif
#endif