PRINTPROVIDOR structure (winsplp.h)

Warning

Starting with Windows 10, the APIs which support third-party print providers are deprecated. Microsoft does not recommend any investment into third-party print providers. Additionally, on Windows 8 and newer products where the v4 print driver model is available, third-party print providers may not create or manage queues which use v4 print drivers.

The PRINTPROVIDOR structure is used as a parameter to a print provider's InitializePrintProvidor function. All structure member values are supplied by the provider.

Syntax

typedef struct _PRINTPROVIDOR {
  BOOL( )(PWSTR pPrinterName,PHANDLE phPrinter,PPRINTER_DEFAULTS pDefault)    *fpOpenPrinter;
  BOOL( )(HANDLE hPrinter,DWORD JobId,DWORD Level,LPBYTE pJob,DWORD Command)    *fpSetJob;
  BOOL( )(HANDLE hPrinter,DWORD JobId,DWORD Level,LPBYTE pJob,DWORD cbBuf,LPDWORD pcbNeeded)    *fpGetJob;
  BOOL( )(HANDLE hPrinter,DWORD FirstJob,DWORD NoJobs,DWORD Level,LPBYTE pJob,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)    *fpEnumJobs;
  HANDLE( )(LPWSTR pName,DWORD Level,LPBYTE pPrinter)  *fpAddPrinter;
  BOOL( )(HANDLE hPrinter)    *fpDeletePrinter;
  BOOL( )(HANDLE hPrinter,DWORD Level,LPBYTE pPrinter,DWORD Command)    *fpSetPrinter;
  BOOL( )(HANDLE hPrinter,DWORD Level,LPBYTE pPrinter,DWORD cbBuf,LPDWORD pcbNeeded)    *fpGetPrinter;
  BOOL( )(DWORD Flags,LPWSTR Name,DWORD Level,LPBYTE pPrinterEnum,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)    *fpEnumPrinters;
  BOOL( )(LPWSTR pName,DWORD Level,LPBYTE pDriverInfo)    *fpAddPrinterDriver;
  BOOL( )(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)    *fpEnumPrinterDrivers;
  BOOL( )(HANDLE hPrinter,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded)    *fpGetPrinterDriver;
  BOOL( )(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverDirectory,DWORD cbBuf,LPDWORD pcbNeeded)    *fpGetPrinterDriverDirectory;
  BOOL( )(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pDriverName)    *fpDeletePrinterDriver;
  BOOL( )(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pPathName,LPWSTR pPrintProcessorName)    *fpAddPrintProcessor;
  BOOL( )(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pPrintProcessorInfo,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)    *fpEnumPrintProcessors;
  BOOL( )(LPWSTR pName,LPWSTR pEnvironment,DWORD Level,LPBYTE pPrintProcessorInfo,DWORD cbBuf,LPDWORD pcbNeeded)    *fpGetPrintProcessorDirectory;
  BOOL( )(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pPrintProcessorName)    *fpDeletePrintProcessor;
  BOOL( )(LPWSTR pName,LPWSTR pPrintProcessorName,DWORD Level,LPBYTE pDataypes,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)    *fpEnumPrintProcessorDatatypes;
  DWORD( )(HANDLE hPrinter,DWORD Level,LPBYTE pDocInfo)   *fpStartDocPrinter;
  BOOL( )(HANDLE hPrinter)    *fpStartPagePrinter;
  BOOL( )(HANDLE hPrinter,LPVOID pBuf,DWORD cbBuf,LPDWORD pcWritten)    *fpWritePrinter;
  BOOL( )(HANDLE hPrinter)    *fpEndPagePrinter;
  BOOL( )(HANDLE hPrinter)    *fpAbortPrinter;
  BOOL( )(HANDLE hPrinter,LPVOID pBuf,DWORD cbBuf,LPDWORD pNoBytesRead)    *fpReadPrinter;
  BOOL( )(HANDLE hPrinter)    *fpEndDocPrinter;
  BOOL( )(HANDLE hPrinter,DWORD Level,LPBYTE pData,DWORD cbBuf,LPDWORD pcbNeeded)    *fpAddJob;
  BOOL( )(HANDLE hPrinter,DWORD JobId)    *fpScheduleJob;
  DWORD( )(HANDLE hPrinter,LPWSTR pValueName,LPDWORD pType,LPBYTE pData,DWORD nSize,LPDWORD pcbNeeded)   *fpGetPrinterData;
  DWORD( )(HANDLE hPrinter,LPWSTR pValueName,DWORD Type,LPBYTE pData,DWORD cbData)   *fpSetPrinterData;
  DWORD( )(HANDLE hPrinter,DWORD Flags)   *fpWaitForPrinterChange;
  BOOL( )(HANDLE hPrinter)    *fpClosePrinter;
  BOOL( )(HANDLE hPrinter,DWORD Level,LPBYTE pForm)    *fpAddForm;
  BOOL( )(HANDLE hPrinter,LPWSTR pFormName)    *fpDeleteForm;
  BOOL( )(HANDLE hPrinter,LPWSTR pFormName,DWORD Level,LPBYTE pForm,DWORD cbBuf,LPDWORD pcbNeeded)    *fpGetForm;
  BOOL( )(HANDLE hPrinter,LPWSTR pFormName,DWORD Level,LPBYTE pForm)    *fpSetForm;
  BOOL( )(HANDLE hPrinter,DWORD Level,LPBYTE pForm,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)    *fpEnumForms;
  BOOL( )(LPWSTR pName,DWORD Level,LPBYTE pMonitors,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)    *fpEnumMonitors;
  BOOL( )(LPWSTR pName,DWORD Level,LPBYTE pPorts,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)    *fpEnumPorts;
  BOOL( )(LPWSTR pName,HWND hWnd,LPWSTR pMonitorName)    *fpAddPort;
  BOOL( )(LPWSTR pName,HWND hWnd,LPWSTR pPortName)    *fpConfigurePort;
  BOOL( )(LPWSTR pName,HWND hWnd,LPWSTR pPortName)    *fpDeletePort;
  HANDLE( )(HANDLE hPrinter,LPDEVMODEW pDevMode)  *fpCreatePrinterIC;
  BOOL( )(HANDLE hPrinterIC,LPBYTE pIn,DWORD cIn,LPBYTE pOut,DWORD cOut,DWORD ul)    *fpPlayGdiScriptOnPrinterIC;
  BOOL( )(HANDLE hPrinterIC)    *fpDeletePrinterIC;
  BOOL( )(LPWSTR pName)    *fpAddPrinterConnection;
  BOOL( )(LPWSTR pName)    *fpDeletePrinterConnection;
  DWORD( )(HANDLE hPrinter,DWORD Error,HWND hWnd,LPWSTR pText,LPWSTR pCaption,DWORD dwType)   *fpPrinterMessageBox;
  BOOL( )(LPWSTR pName,DWORD Level,LPBYTE pMonitorInfo)    *fpAddMonitor;
  BOOL( )(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pMonitorName)    *fpDeleteMonitor;
  BOOL( )(HANDLE hPrinter,LPPRINTER_DEFAULTS pDefault)    *fpResetPrinter;
  BOOL( )(HANDLE hPrinter,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded,DWORD dwClientMajorVersion,DWORD dwClientMinorVersion,PDWORD pdwServerMajorVersion,PDWORD pdwServerMinorVersion)    *fpGetPrinterDriverEx;
  BOOL( )(HANDLE hPrinter,DWORD fdwFlags,DWORD fdwOptions,HANDLE hNotify,PDWORD pfdwStatus,PVOID pPrinterNotifyOptions,PVOID pPrinterNotifyInit)    *fpFindFirstPrinterChangeNotification;
  BOOL( )(HANDLE hPrinter)    *fpFindClosePrinterChangeNotification;
  BOOL( )(LPWSTR pName,DWORD Level,LPBYTE lpBuffer,LPWSTR lpMonitorName)    *fpAddPortEx;
  BOOL( )(LPVOID pvReserved)    *fpShutDown;
  BOOL( )(HANDLE hPrinter,DWORD Reserved,PVOID pvReserved,PVOID pPrinterNotifyInfo)    *fpRefreshPrinterChangeNotification;
  BOOL( )(LPWSTR pPrinterName,LPHANDLE phPrinter,LPPRINTER_DEFAULTS pDefault,LPBYTE pClientInfo,DWORD Level)    *fpOpenPrinterEx;
  HANDLE( )(LPWSTR pName,DWORD Level,LPBYTE pPrinter,LPBYTE pClientInfo,DWORD ClientInfoLevel)  *fpAddPrinterEx;
  BOOL( )(LPWSTR pName,LPWSTR pPortName,DWORD Level,LPBYTE pPortInfo)    *fpSetPort;
  DWORD( )(HANDLE hPrinter,DWORD dwIndex,LPWSTR pValueName,DWORD cbValueName,LPDWORD pcbValueName,LPDWORD pType,LPBYTE pData,DWORD cbData,LPDWORD pcbData)   *fpEnumPrinterData;
  DWORD( )(HANDLE hPrinter,LPWSTR pValueName)   *fpDeletePrinterData;
  DWORD( )(LPCTSTR pszServer,LPCTSTR pszResource,PHANDLE phSpooler,LPCTSTR pszName,LPCTSTR pszAddress)   *fpClusterSplOpen;
  DWORD( )(HANDLE hSpooler)   *fpClusterSplClose;
  DWORD( )(HANDLE hSpooler)   *fpClusterSplIsAlive;
  DWORD( )(HANDLE hPrinter,LPCWSTR pKeyName,LPCWSTR pValueName,DWORD Type,LPBYTE pData,DWORD cbData)   *fpSetPrinterDataEx;
  DWORD( )(HANDLE hPrinter,LPCWSTR pKeyName,LPCWSTR pValueName,LPDWORD pType,LPBYTE pData,DWORD nSize,LPDWORD pcbNeeded)   *fpGetPrinterDataEx;
  DWORD( )(HANDLE hPrinter,LPCWSTR pKeyName,LPBYTE pEnumValues,DWORD cbEnumValues,LPDWORD pcbEnumValues,LPDWORD pnEnumValues)   *fpEnumPrinterDataEx;
  DWORD( )(HANDLE hPrinter,LPCWSTR pKeyName,LPWSTR pSubkey,DWORD cbSubkey,LPDWORD pcbSubkey)   *fpEnumPrinterKey;
  DWORD( )(HANDLE hPrinter,LPCWSTR pKeyName,LPCWSTR pValueName)   *fpDeletePrinterDataEx;
  DWORD( )(HANDLE hPrinter,LPCWSTR pKeyName)   *fpDeletePrinterKey;
  BOOL( )(HANDLE hPrinter,LARGE_INTEGER liDistanceToMove,PLARGE_INTEGER pliNewPointer,DWORD dwMoveMethod,BOOL bWrite)    *fpSeekPrinter;
  BOOL( )(LPWSTR pName,LPWSTR pEnvironment,LPWSTR pDriverName,DWORD dwDeleteFlag,DWORD dwVersionNum)    *fpDeletePrinterDriverEx;
  BOOL( )(LPCWSTR pServer,LPCWSTR pPrinterName,LPCWSTR pPrintServer,LPCWSTR pProvider)    *fpAddPerMachineConnection;
  BOOL( )(LPCWSTR pServer,LPCWSTR pPrinterName)    *fpDeletePerMachineConnection;
  BOOL( )(LPCWSTR pServer,LPBYTE pPrinterEnum,DWORD cbBuf,LPDWORD pcbNeeded,LPDWORD pcReturned)    *fpEnumPerMachineConnections;
  BOOL( )(HANDLE hXcv,LPCWSTR pszDataName,PBYTE pInputData,DWORD cbInputData,PBYTE pOutputData,DWORD cbOutputData,PDWORD pcbOutputNeeded,PDWORD pdwStatus)    *fpXcvData;
  BOOL( )(LPWSTR pName,DWORD Level,LPBYTE pDriverInfo,DWORD dwFileCopyFlags)    *fpAddPrinterDriverEx;
  BOOL()(HANDLE hPrinter,LPBYTE *pBuf,DWORD cbBuf)    * fpSplReadPrinter;
  BOOL( )(LPWSTR pDriverFile)    *fpDriverUnloadComplete;
  BOOL()(HANDLE hPrinter,LPWSTR *pSpoolDir,LPHANDLE phFile,HANDLE hSpoolerProcess,HANDLE hAppProcess)    * fpGetSpoolFileInfo;
  BOOL( )(HANDLE hPrinter,DWORD cbCommit)    *fpCommitSpoolData;
  BOOL( )(HANDLE hPrinter)    *fpCloseSpoolFileHandle;
  BOOL( )(HANDLE hPrinter,LPBYTE pBuf,DWORD cbBuf,LPDWORD pcWritten,DWORD cSleep)    *fpFlushPrinter;
  DWORD()(HANDLE hPrinter,LPCWSTR pAction,PBIDI_REQUEST_CONTAINER pReqData,PBIDI_RESPONSE_CONTAINER *ppResData)   * fpSendRecvBidiData;
  BOOL( )(LPCWSTR pName,DWORD dwLevel,PVOID pInfo)    *fpAddPrinterConnection2;
#if ...
  HRESULT((PCWSTR, const IID &,VOID **) * )fpGetPrintClassObject;
#else
  HRESULT(PCWSTR, const IID *,VOID **) * )(fpGetPrintClassObject;
#endif
  HRESULT( )(HANDLE hPrinter,ULONG jobId,EPrintXPSJobOperation jobOperation,EPrintXPSJobProgress jobProgress) *fpReportJobProcessingProgress;
  VOID()(DWORD dwLevel,VOID *pfOut)    * fpEnumAndLogProvidorObjects;
  HRESULT( )(HANDLE hPrinter,LPWSTR pEnvironment,DWORD Level,LPBYTE pDriverInfo,DWORD cbBuf,LPDWORD pcbNeeded,DWORD dwClientMajorVersion,DWORD dwClientMinorVersion,PDWORD pdwServerMajorVersion,PDWORD pdwServerMinorVersion) *fpInternalGetPrinterDriver;
  HRESULT( )(LPCWSTR pcszPnpId,LPCWSTR pcszPortName,LPWSTR pszManufacturerName,DWORD cchManufacturerName,LPDWORD pcchRequiredManufacturerNameSize,LPWSTR pszModelName,DWORD cchModelName,LPDWORD pcchRequiredModelNameSize,LPDWORD pdwRank0Matches) *fpFindCompatibleDriver;
  HRESULT( )(LPCWSTR pcszConnectionName) *fpInstallPrinterDriverPackageFromConnection;
  DWORD()(HANDLE hPrinter,DWORD JobId,PCWSTR pszName,PrintPropertyValue *pValue)   * fpGetJobNamedPropertyValue;
  DWORD()(HANDLE hPrinter,DWORD JobId, const PrintNamedProperty *pProperty)   * fpSetJobNamedProperty;
  DWORD( )(HANDLE hPrinter,DWORD JobId,PCWSTR pszName)   *fpDeleteJobNamedProperty;
  DWORD(HANDLE hPrinter,DWORD JobId,DWORD *pcProperties,PrintNamedProperty **ppProperties)   * )(fpEnumJobNamedProperties;
  DWORD()(DWORD event,POWERBROADCAST_SETTING *pPowerSetting)   * fpPowerEvent;
  DWORD()(HANDLE hPrinter,HKEY *phKey)   * fpGetUserPropertyBag;
  BOOL( )()    *fpCanShutdown;
  DWORD( )(HANDLE hPrinter,PBranchOfficeJobDataContainer pJobDataContainer)   *fpLogJobInfoForBranchOffice;
  DWORD( )(HANDLE hPrinter)   *fpRegeneratePrintDeviceCapabilities;
  HRESULT( )(HANDLE hPrinter,DWORD JobId,DWORD dwOperationType,LPBYTE pInputData,DWORD cbInputData,LPDWORD pcWritten) *fpPrintSupportOperation;
  HRESULT()(HANDLE hPrinter,DWORD jobId,PCWSTR pdlFormat,DWORD jobAttributesBufferSize,PBYTE jobAttributeGroupBuffer,PDWORD ippResponseBufferSize,PBYTE *ippResponseBuffer) * fpIppCreateJobOnPrinter;
  HRESULT(NDLE hPrinter,DWORD JobId,DWORD attributeNameCount, const wchar_t **attributeNames,DWORD *ippResponseBufferSize,BYTE **ippResponseBuffer) * )(HAfpIppGetJobAttributes;
  HRESULT(ANDLE hPrinter,DWORD JobId,DWORD jobAttributeGroupBufferSize,BYTE *jobAttributeGroupBuffer,DWORD *ippResponseBufferSize,BYTE **ippResponseBuffer) * )(HfpIppSetJobAttributes;
  HRESULT(NDLE hPrinter,DWORD attributeNameCount, const wchar_t **attributeNames,DWORD *ippResponseBufferSize,BYTE **ippResponseBuffer) * )(HAfpIppGetPrinterAttributes;
  HRESULT(ANDLE hPrinter,DWORD jobAttributeGroupBufferSize,BYTE *jobAttributeGroupBuffer,DWORD *ippResponseBufferSize,BYTE **ippResponseBuffer) * )(HfpIppSetPrinterAttributes;
  HRESULT()(HANDLE hPrinter,DWORD jobId,PCWSTR pdlFormat,DWORD jobAttributesBufferSize,PBYTE jobAttributeGroupBuffer,DWORD operationAttributesBufferSize,PBYTE operationAttributeGroupBuffer,PDWORD ippResponseBufferSize,PBYTE *ippResponseBuffer) * fpIppCreateJobOnPrinterWithAttributes;
} PRINTPROVIDOR, *LPPRINTPROVIDOR;

Members

fpOpenPrinter

(Required.) Pointer to the provider's OpenPrinter function. However, at the provider level, this function must supply one of the DWORD return values listed in the following table.

Return value Definition
ROUTER_SUCCESS The provider supports the specified printer and has opened it.
ROUTER_STOP_ROUTING The provider supports the specified printer, but an error occurred and the printer could not be opened. It is assumed that no other provider can support the printer. The function must call SetLastError.
ROUTER_UNKNOWN The provider does not support the specified printer. The function must call SetLastError and specify ERROR_INVALID_NAME.

The router calls each provider until one of them returns ROUTER_SUCCESS or ROUTER_STOP_ROUTING. If the provider returns ROUTER_SUCCESS, it must also return a unique handle. For more information, see Introduction to Print Providers.) The router first attempts to call the provider's OpenPrinterEx function. If that function is not supported, the router calls OpenPrinter.

fpSetJob

(Required.) Pointer to the provider's SetJob function.

fpGetJob

(Required.) Pointer to the provider's GetJob function.

fpEnumJobs

(Required.) Pointer to the provider's EnumJobs function.

fpAddPrinter

(Optional. Can be NULL.) Pointer to the provider's AddPrinter function.

fpDeletePrinter

(Optional. Can be NULL.) Pointer to the provider's DeletePrinter function.

fpSetPrinter

(Required.) Pointer to the provider's SetPrinter function.

fpGetPrinter

(Required.) Pointer to the provider's GetPrinter function. If you are writing a network print provider and GetPrinter is returning a PRINTER_INFO_2 structure, the function should supply only the cJobs and Status structure members. The local print provider) supplies the rest of the structure members.

fpEnumPrinters

(Required.) Pointer to the provider's EnumPrinters function.

fpAddPrinterDriver

(Optional. Can be NULL.) Pointer to the provider's AddPrinterDriver function. If the provider does not support the specified driver or server, it should specify ERROR_INVALID_NAME to SetLastError before returning FALSE.

fpEnumPrinterDrivers

(Optional. Can be NULL.) Pointer to the provider's EnumPrinterDrivers function. If the provider does not support the specified server, it should specify ERROR_INVALID_NAME to SetLastError before returning FALSE.

fpGetPrinterDriver

(Optional. Can be NULL.) Pointer to the provider's GetPrinterDriver function. The router first attempts to call the provider's GetPrinterDriverEx function. If that function is not supported, the router calls GetPrinterDriver.

fpGetPrinterDriverDirectory

(Optional. Can be NULL.) Pointer to the provider's GetPrinterDriverDirectory function. If the provider does not support the specified server, it should specify ERROR_INVALID_NAME to SetLastError before returning FALSE.

fpDeletePrinterDriver

(Optional. Can be NULL.) Pointer to the provider's DeletePrinterDriver function. If the provider does not support the specified server, it should specify ERROR_INVALID_NAME to SetLastError before returning FALSE.

fpAddPrintProcessor

(Optional. Can be NULL.) Pointer to the provider's AddPrintProcessor function.

fpEnumPrintProcessors

(Optional. Can be NULL.) Pointer to the provider's EnumPrintProcessors function.

fpGetPrintProcessorDirectory

(Optional. Can be NULL.) Pointer to the provider's GetPrintProcessorDirectory function.

fpDeletePrintProcessor

(Optional. Can be NULL.) Pointer to the provider's DeletePrintProcessor function.

fpEnumPrintProcessorDatatypes

(Optional. Can be NULL.) Pointer to the provider's EnumPrintProcessorDatatypes function.

fpStartDocPrinter

(Required.) Pointer to the provider's StartDocPrinter function.

fpStartPagePrinter

(Optional. Can be NULL.) Pointer to the provider's StartPagePrinter function.

fpWritePrinter

(Required.) Pointer to the provider's WritePrinter function.

fpEndPagePrinter

(Optional. Can be NULL.) Pointer to the provider's EndPagePrinterfunction.

fpAbortPrinter

(Required.) Pointer to the provider's AbortPrinter function.

fpReadPrinter

(Optional. Can be NULL.) Pointer to the provider's ReadPrinter function.

fpEndDocPrinter

(Required.) Pointer to the provider's EndDocPrinter function.

fpAddJob

(Required.) Pointer to the provider's AddJob function.

fpScheduleJob

(Required.) Pointer to the provider's ScheduleJob function.

fpGetPrinterData

(Optional. Can be NULL.) Pointer to the provider's GetPrinterData function.

fpSetPrinterData

(Optional. Can be NULL.) Pointer to the provider's SetPrinterData function.

fpWaitForPrinterChange

Obsolete. Must be NULL.

fpClosePrinter

(Required.) Pointer to the provider's ClosePrinter function. If a printer change notification object has been created, then the router calls the provider's FindClosePrinterChangeNotification function before calling ClosePrinter.

fpAddForm

(Optional. Can be NULL.) Pointer to the provider's AddForm function.

fpDeleteForm

(Optional. Can be NULL.) Pointer to the provider's DeleteForm function.

fpGetForm

(Optional. Can be NULL.) Pointer to the provider's GetForm function.

fpSetForm

(Optional. Can be NULL.) Pointer to the provider's SetForm function.

fpEnumForms

(Optional. Can be NULL.) Pointer to the provider's EnumForms function.

fpEnumMonitors

(Optional. Can be NULL.) Pointer to the provider's EnumMonitors function, which is described in the Windows SDK documentation. However, at the provider level this function must supply one of the DWORD return values listed in the following table.

Return value Definition
ROUTER_SUCCESS The provider has enumerated the monitors on the specified server.
ROUTER_STOP_ROUTING The provider has enumerated the monitors on the specified server, and the router should not call other providers.
ROUTER_UNKNOWN The provider does not support the specified server.

fpEnumPorts

Return value Definition
ROUTER_SUCCESS The provider has enumerated the ports on the specified server.
ROUTER_STOP_ROUTING The provider has enumerated the ports on the specified server, and the router should not call other providers.
ROUTER_UNKNOWN The provider does not support the specified server.

fpAddPort

(Optional. Can be NULL.) Pointer to the provider's AddPort function. If the provider does not support the specified port, it must supply ERROR_NOT_SUPPORTED to SetLastError before returning FALSE.

fpConfigurePort

(Required.) Pointer to the provider's ConfigurePort function. If the function supplies ERROR_NOT_SUPPORTED, ERROR_INVALID_NAME, or ERROR_UNKNOWN_PORT to SetLastError, the router will attempt to call another provider.

fpDeletePort

(Required.) Pointer to the provider's DeletePort function. If the provider does not support the specified port, it must supply ERROR_NOT_SUPPORTED to SetLastError before returning FALSE.

fpCreatePrinterIC

For internal use only. Must be NULL.

fpPlayGdiScriptOnPrinterIC

For internal use only. Must be NULL.

fpDeletePrinterIC

For internal use only. Must be NULL.

fpAddPrinterConnection

(Optional. Can be NULL.) Pointer to the provider's AddPrinterConnection function.

fpDeletePrinterConnection

(Optional. Can be NULL.) Pointer to the provider's DeletePrinterConnection function.

fpPrinterMessageBox

Not used. Must be NULL.

fpAddMonitor

(Optional. Can be NULL.) Pointer to the provider's AddMonitor function. If the provider does not support the specified monitor, it must supply ERROR_INVALID_NAME to SetLastError before returning FALSE.

fpDeleteMonitor

(Optional. Can be NULL.) Pointer to the provider's DeleteMonitor function. If the provider does not support the specified monitor, it must supply ERROR_INVALID_NAME to SetLastError before returning FALSE.

fpResetPrinter

(Optional. Can be NULL.) Pointer to the provider's ResetPrinter function.

fpGetPrinterDriverEx

(Optional. Can be NULL.) Pointer to the provider's GetPrinterDriverEx function. If GetPrinterDriverEx is not supported, the router attempts to call GetPrinterDriver.

fpFindFirstPrinterChangeNotification

(Optional. Can be NULL.) Pointer to the provider's FindFirstPrinterChangeNotification function.

fpFindClosePrinterChangeNotification

(Optional. Can be NULL.) Pointer to the provider's FindClosePrinterChangeNotification function.

fpAddPortEx

(Optional. Can be NULL.) Pointer to the provider's AddPortEx function. If the provider does not support the specified port, it must supply ERROR_NOT_SUPPORTED to SetLastError before returning FALSE.

fpShutDown

For internal use only. Must be NULL.

fpRefreshPrinterChangeNotification

(Optional. Can be NULL.) Pointer to the provider's RefreshPrinterChangeNotification function.

fpOpenPrinterEx

For internal use only. Must be NULL.

fpAddPrinterEx

For internal use only. Must be NULL.

fpSetPort

(Optional. Can be NULL.) Pointer to the provider's SetPort function. If the function supplies ERROR_NOT_SUPPORTED, ERROR_INVALID_NAME, or ERROR_UNKNOWN_PORT to SetLastError, the router will attempt to call another provider.

fpEnumPrinterData

(Optional. Can be NULL.) Pointer to the provider's EnumPrinterData function.

fpDeletePrinterData

(Optional. Can be NULL.) Pointer to the provider's DeletePrinterData function.

fpClusterSplOpen

For internal use only. Must be NULL.

fpClusterSplClose

For internal use only. Must be NULL.

fpClusterSplIsAlive

For internal use only. Must be NULL.

fpSetPrinterDataEx

(Optional. Can be NULL.) Pointer to the provider's SetPrinterDataEx function.

fpGetPrinterDataEx

(Optional. Can be NULL.) Pointer to the provider's GetPrinterDataEx function.

fpEnumPrinterDataEx

(Optional. Can be NULL.) Pointer to the provider's EnumPrinterDataEx function.

fpEnumPrinterKey

(Optional. Can be NULL.) Pointer to the provider's EnumPrinterKey function.

fpDeletePrinterDataEx

(Optional. Can be NULL.) Pointer to the provider's DeletePrinterDataEx function.

fpDeletePrinterKey

(Optional. Can be NULL.) Pointer to the provider's DeletePrinterKey function.

fpSeekPrinter

For internal use only. Must be NULL.

fpDeletePrinterDriverEx

(Optional. Can be NULL.) Pointer to the provider's DeletePrinterDriverEx function. If the provider does not support the specified server, it should specify ERROR_INVALID_NAME to SetLastError before returning FALSE.

fpAddPerMachineConnection

For internal use only. Must be NULL.

fpDeletePerMachineConnection

For internal use only. Must be NULL.

fpEnumPerMachineConnections

For internal use only. Must be NULL.

fpXcvData

(Optional. Can be NULL.) Pointer to the provider's XcvData function.

fpAddPrinterDriverEx

(Optional. Can be NULL.) Pointer to the provider's AddPrinterDriverEx function. If the provider does not support the specified server, it should specify ERROR_INVALID_NAME to SetLastError before returning FALSE.

fpSplReadPrinter

For internal use only. Must be NULL.

fpDriverUnloadComplete

For internal use only. Must be NULL.

fpGetSpoolFileInfo

For internal use only. Must be NULL.

fpCommitSpoolData

For internal use only. Must be NULL.

fpCloseSpoolFileHandle

For internal use only. Must be NULL.

fpFlushPrinter

For internal use only. Must be NULL.

fpSendRecvBidiData

(Optional. Can be NULL.) Pointer to the provider's SendRecvBidiData function. If this parameter is NULL, it means that the provider does not support bidi communication.

fpAddPrinterConnection2

For internal use only. Must be NULL.

fpGetPrintClassObject

For internal use only. Must be NULL.

fpReportJobProcessingProgress

For internal use only. Must be NULL.

fpEnumAndLogProvidorObjects

For internal use only. Must be NULL.

fpInternalGetPrinterDriver

For internal use only. Must be NULL.

fpFindCompatibleDriver

For internal use only. Must be NULL.

fpInstallPrinterDriverPackageFromConnection

For internal use only. Must be NULL.

fpGetJobNamedPropertyValue

For internal use only. Must be NULL.

fpSetJobNamedProperty

For internal use only. Must be NULL.

fpDeleteJobNamedProperty

For internal use only. Must be NULL.

fpEnumJobNamedProperties

For internal use only. Must be NULL.

fpPowerEvent

For internal use only. Must be NULL.

fpGetUserPropertyBag

For internal use only. Must be NULL.

fpCanShutdown

For internal use only. Must be NULL.

fpLogJobInfoForBranchOffice

For internal use only. Must be NULL.

fpRegeneratePrintDeviceCapabilities

For internal use only. Must be NULL.

fpPrintSupportOperation

For internal use only. Must be NULL.

fpIppCreateJobOnPrinter

For internal use only. Must be NULL.

fpIppGetJobAttributes

For internal use only. Must be NULL.

fpIppSetJobAttributes

For internal use only. Must be NULL.

fpIppGetPrinterAttributes

For internal use only. Must be NULL.

fpIppSetPrinterAttributes

For internal use only. Must be NULL.

fpIppCreateJobOnPrinterWithAttributes

For internal use only. Must be NULL.

Remarks

Function pointers are listed in the order they are specified within the PRINTPROVIDOR structure. To see function descriptions grouped by related capabilities, see Functions Defined by Print Providers.

Requirements

Requirement Value
Header winsplp.h (include Winsplp.h)

See also

FindFirstPrinterChangeNotification

InitializePrintProvidor

RefreshPrinterChangeNotification

SendRecvBidiData

XcvData