Click to Rate and Give Feedback
MSDN
MSDN Library
Windows Driver Kit
Print
Reference
 PRINTPROVIDOR
Windows Driver Kit: Print Devices
PRINTPROVIDOR

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

typedef struct _PRINTPROVIDOR {
  BOOL (*fpOpenPrinter)(LPWSTR  pPrinterName,
                        LPHANDLE  phPrinter,
                        LPPRINTER_DEFAULTS  pDefault);
  BOOL (*fpSetJob)(HANDLE  hPrinter,
                   DWORD  JobId,
                   DWORD  Level,
                   LPBYTE  pJob,
                   DWORD  Command);
  BOOL (*fpGetJob)(HANDLE  hPrinter,
                   DWORD  JobId,
                   DWORD  Level,
                   LPBYTE  pJob,
                   DWORD  cbBuf,
                   LPDWORD  pcbNeeded);
  BOOL (*fpEnumJobs)(HANDLE  hPrinter,
                     DWORD  FirstJob,
                     DWORD  NoJobs,
                     DWORD  Level,
                     LPBYTE  pJob,
                     DWORD  cbBuf,
                     LPDWORD  pcbNeeded,
                     LPDWORD  pcReturned);
  HANDLE (*fpAddPrinter)(LPWSTR  pName,
                         DWORD  Level,
                         LPBYTE  pPrinter);
  BOOL (*fpDeletePrinter)(HANDLE  hPrinter);
  BOOL (*fpSetPrinter)(HANDLE  hPrinter,
                       DWORD  Level,
                       LPBYTE  pPrinter,
                       DWORD  Command);
  BOOL (*fpGetPrinter)(HANDLE  hPrinter,
                       DWORD  Level,
                       LPBYTE  pPrinter,
                       DWORD  cbBuf,
                       LPDWORD  pcbNeeded);
  BOOL (*fpEnumPrinters)(DWORD  Flags,
                         LPWSTR  Name,
                         DWORD  Level,
                         LPBYTE  pPrinterEnum,
                         DWORD  cbBuf,
                         LPDWORD  pcbNeeded,
                         LPDWORD  pcReturned);
  BOOL (*fpAddPrinterDriver)(LPWSTR  pName,
                             DWORD  Level,
                             LPBYTE  pDriverInfo);
  BOOL (*fpEnumPrinterDrivers)(LPWSTR  pName,
                               LPWSTR  pEnvironment,
                               DWORD  Level,
                               LPBYTE  pDriverInfo,
                               DWORD  cbBuf,
                               LPDWORD  pcbNeeded,
                               LPDWORD  pcReturned);
  BOOL (*fpGetPrinterDriver)(HANDLE  hPrinter,
                             LPWSTR  pEnvironment,
                             DWORD  Level,
                             LPBYTE  pDriverInfo,
                             DWORD  cbBuf,
                             LPDWORD  pcbNeeded);
  BOOL (*fpGetPrinterDriverDirectory)(LPWSTR  pName,
                                      LPWSTR  pEnvironment,
                                      DWORD  Level,
                                      LPBYTE  pDriverDirectory,
                                      DWORD  cbBuf,
                                      LPDWORD  pcbNeeded);
  BOOL (*fpDeletePrinterDriver)(LPWSTR  pName,
                                LPWSTR  pEnvironment,
                                LPWSTR  pDriverName);
  BOOL (*fpAddPrintProcessor)(LPWSTR  pName,
                              LPWSTR  pEnvironment,
                              LPWSTR  pPathName,
                              LPWSTR  pPrintProcessorName);
  BOOL (*fpEnumPrintProcessors)(LPWSTR  pName,
                                LPWSTR  pEnvironment,
                                DWORD  Level,
                                LPBYTE  pPrintProcessorInfo,
                                DWORD  cbBuf,
                                LPDWORD  pcbNeeded,
                                LPDWORD  pcReturned);
  BOOL (*fpGetPrintProcessorDirectory)(LPWSTR  pName,
                                       LPWSTR  pEnvironment,
                                       DWORD  Level,
                                       LPBYTE  pPrintProcessorInfo,
                                       DWORD  cbBuf,
                                       LPDWORD  pcbNeeded);
  BOOL (*fpDeletePrintProcessor)(LPWSTR  pName,
                                 LPWSTR  pEnvironment,
                                 LPWSTR  pPrintProcessorName);
  BOOL (*fpEnumPrintProcessorDatatypes)(LPWSTR  pName,
                                        LPWSTR  pPrintProcessorName,
                                        DWORD  Level,
                                        LPBYTE  pDataypes,
                                        DWORD  cbBuf,
                                        LPDWORD  pcbNeeded,
                                        LPDWORD  pcReturned);
  DWORD (*fpStartDocPrinter)(HANDLE  hPrinter,
                             DWORD  Level,
                             LPBYTE  pDocInfo);
  BOOL (*fpStartPagePrinter)(HANDLE  hPrinter);
  BOOL (*fpWritePrinter)(HANDLE  hPrinter,
                         LPVOID  pBuf,
                         DWORD  cbBuf,
                         LPDWORD  pcWritten);
  BOOL (*fpEndPagePrinter)(HANDLE  hPrinter);
  BOOL (*fpAbortPrinter)(HANDLE  hPrinter);
  BOOL (*fpReadPrinter)(HANDLE  hPrinter,
                        LPVOID  pBuf,
                        DWORD  cbBuf,
                        LPDWORD  pNoBytesRead);
  BOOL (*fpEndDocPrinter)(HANDLE  hPrinter);
  BOOL (*fpAddJob)(HANDLE  hPrinter,
                   DWORD  Level,
                   LPBYTE  pData,
                   DWORD  cbBuf,
                   LPDWORD  pcbNeeded);
  BOOL (*fpScheduleJob)(HANDLE  hPrinter,
                        DWORD  JobId);
  DWORD (*fpGetPrinterData)(HANDLE  hPrinter,
                            LPWSTR  pValueName,
                            LPDWORD  pType,
                            LPBYTE  pData,
                            DWORD  nSize,
                            LPDWORD  pcbNeeded);
  DWORD (*fpSetPrinterData)(HANDLE  hPrinter,
                            LPWSTR  pValueName,
                            DWORD  Type,
                            LPBYTE  pData,
                            DWORD  cbData);
  DWORD (*fpWaitForPrinterChange)(HANDLE  hPrinter,
                                  DWORD  Flags);
  BOOL (*fpClosePrinter)(HANDLE  hPrinter);
  BOOL (*fpAddForm)(HANDLE  hPrinter,
                    DWORD  Level,
                    LPBYTE  pForm);
  BOOL (*fpDeleteForm)(HANDLE  hPrinter,
                       LPWSTR  pFormName);
  BOOL (*fpGetForm)(HANDLE  hPrinter,
                    LPWSTR  pFormName,
                    DWORD  Level,
                    LPBYTE  pForm,
                    DWORD  cbBuf,
                    LPDWORD  pcbNeeded);
  BOOL (*fpSetForm)(HANDLE  hPrinter,
                    LPWSTR  pFormName,
                    DWORD  Level,
                    LPBYTE  pForm);
  BOOL (*fpEnumForms)(HANDLE  hPrinter,
                      DWORD  Level,
                      LPBYTE  pForm,
                      DWORD  cbBuf,
                      LPDWORD  pcbNeeded,
                      LPDWORD  pcReturned);
  BOOL (*fpEnumMonitors)(LPWSTR  pName,
                         DWORD  Level,
                         LPBYTE  pMonitors,
                         DWORD  cbBuf,
                         LPDWORD  pcbNeeded,
                         LPDWORD  pcReturned);
  BOOL (*fpEnumPorts)(LPWSTR  pName,
                      DWORD  Level,
                      LPBYTE  pPorts,
                      DWORD  cbBuf,
                      LPDWORD  pcbNeeded,
                      LPDWORD  pcReturned);
  BOOL (*fpAddPort)(LPWSTR  pName,
                    HWND  hWnd,
                    LPWSTR  pMonitorName);
  BOOL (*fpConfigurePort)(LPWSTR  pName,
                          HWND  hWnd,
                          LPWSTR  pPortName);
  BOOL (*fpDeletePort)(LPWSTR  pName,
                       HWND  hWnd,
                       LPWSTR  pPortName);
  HANDLE (*fpCreatePrinterIC)(HANDLE  hPrinter,
                              LPDEVMODEW  pDevMode);
  BOOL (*fpPlayGdiScriptOnPrinterIC)(HANDLE  hPrinterIC,
                                     LPBYTE  pIn,
                                     DWORD  cIn,
                                     LPBYTE  pOut,
                                     DWORD  cOut,
                                     DWORD  ul);
  BOOL (*fpDeletePrinterIC)(HANDLE  hPrinterIC);
  BOOL (*fpAddPrinterConnection)(LPWSTR  pName);
  BOOL (*fpDeletePrinterConnection)(LPWSTR  pName);
  DWORD (*fpPrinterMessageBox)(HANDLE  hPrinter,
                               DWORD  Error,
                               HWND  hWnd,
                               LPWSTR  pText,
                               LPWSTR  pCaption,
                               DWORD  dwType);
  BOOL (*fpAddMonitor)(LPWSTR  pName,
                       DWORD  Level,
                       LPBYTE  pMonitorInfo);
  BOOL (*fpDeleteMonitor)(LPWSTR  pName,
                          LPWSTR  pEnvironment,
                          LPWSTR  pMonitorName);
  BOOL (*fpResetPrinter)(HANDLE  hPrinter,
                         LPPRINTER_DEFAULTS  pDefault);
  BOOL (*fpGetPrinterDriverEx)(HANDLE  hPrinter,
                               LPWSTR  pEnvironment,
                               DWORD  Level,
                               LPBYTE  pDriverInfo,
                               DWORD  cbBuf,
                               LPDWORD  pcbNeeded,
                               DWORD  dwClientMajorVersion,
                               DWORD  dwClientMinorVersion,
                               PDWORD  pdwServerMajorVersion,
                               PDWORD  pdwServerMinorVersion);
  BOOL (*fpFindFirstPrinterChangeNotification)(
            HANDLE  hPrinter,
            DWORD  fdwFlags,
            DWORD  fdwOptions,
            HANDLE  hNotify,
            PDWORD  pfdwStatus,
            PVOID  pPrinterNotifyOptions,
            PVOID  pPrinterNotifyInit);
  BOOL (*fpFindClosePrinterChangeNotification)(HANDLE  hPrinter);
  BOOL (*fpAddPortEx)(LPWSTR  pName,
                      DWORD  Level,
                      LPBYTE  lpBuffer,
                      LPWSTR  lpMonitorName);
  BOOL (*fpShutDown)(LPVOID  pvReserved);
  BOOL (*fpRefreshPrinterChangeNotification)(
                      HANDLE  hPrinter,
                      DWORD  Reserved,
                      PVOID  pvReserved,
                      PVOID  pPrinterNotifyInfo);
  BOOL (*fpOpenPrinterEx)(LPWSTR  pPrinterName,
                          LPHANDLE  phPrinter,
                          LPPRINTER_DEFAULTS  pDefault,
                          LPBYTE  pClientInfo,
                          DWORD  Level);
  HANDLE (*fpAddPrinterEx)(LPWSTR  pName,
                           DWORD  Level,
                           LPBYTE  pPrinter,
                           LPBYTE  pClientInfo,
                           DWORD  ClientInfoLevel);
  BOOL (*fpSetPort)(LPWSTR  pName,
                    LPWSTR  pPortName,
                    DWORD  Level,
                    LPBYTE  pPortInfo);
  DWORD (*fpEnumPrinterData)(HANDLE  hPrinter,
                             DWORD  dwIndex,
                             LPWSTR  pValueName,
                             DWORD  cbValueName,
                             LPDWORD  pcbValueName,
                             LPDWORD  pType,
                             LPBYTE  pData,
                             DWORD  cbData,
                             LPDWORD  pcbData);
  DWORD (*fpDeletePrinterData)(HANDLE  hPrinter,
                               LPWSTR  pValueName);
  DWORD (*fpClusterSplOpen)(LPCTSTR  pszServer,
                            LPCTSTR  pszResource,
                            PHANDLE  phSpooler,
                            LPCTSTR  pszName,
                            LPCTSTR  pszAddress );
  DWORD (*fpClusterSplClose)(HANDLE  hSpooler);
  DWORD (*fpClusterSplIsAlive)(HANDLE  hSpooler);
  DWORD (*fpSetPrinterDataEx)(HANDLE  hPrinter,
                              LPCWSTR  pKeyName,
                              LPCWSTR  pValueName,
                              DWORD  Type,
                              LPBYTE  pData,
                              DWORD  cbData);
  DWORD (*fpGetPrinterDataEx)(HANDLE  hPrinter,
                              LPCWSTR  pKeyName,
                              LPCWSTR  pValueName,
                              LPDWORD  pType,
                              LPBYTE  pData,
                              DWORD  nSize,
                              LPDWORD  pcbNeeded);
  DWORD (*fpEnumPrinterDataEx)(HANDLE  hPrinter,
                               LPCWSTR  pKeyName,
                               LPBYTE  pEnumValues,
                               DWORD  cbEnumValues,
                               LPDWORD  pcbEnumValues,
                               LPDWORD  pnEnumValues);
  DWORD (*fpEnumPrinterKey)(HANDLE  hPrinter,
                            LPCWSTR  pKeyName,
                            LPWSTR  pSubkey,
                            DWORD  cbSubkey,
                            LPDWORD  pcbSubkey);
  DWORD (*fpDeletePrinterDataEx)(HANDLE  hPrinter,
                                 LPCWSTR  pKeyName,
                                 LPCWSTR  pValueName);
  DWORD (*fpDeletePrinterKey)(HANDLE  hPrinter,
                              LPCWSTR  pKeyName);
  BOOL (*fpSeekPrinter)(HANDLE  hPrinter,
                        LARGE_INTEGER  liDistanceToMove,
                        PLARGE_INTEGER  pliNewPointer,
                        DWORD  dwMoveMethod,
                        BOOL  bWrite);
  BOOL (*fpDeletePrinterDriverEx)(LPWSTR  pName,
                                  LPWSTR  pEnvironment,
                                  LPWSTR  pDriverName,
                                  DWORD  dwDeleteFlag,
                                  DWORD  dwVersionNum);
  BOOL (*fpAddPerMachineConnection)(LPCWSTR  pServer,
                                    LPCWSTR  pPrinterName,
                                    LPCWSTR  pPrintServer,
                                    LPCWSTR  pProvider);
  BOOL (*fpDeletePerMachineConnection)(LPCWSTR  pServer,
                                       LPCWSTR  pPrinterName);
  BOOL (*fpEnumPerMachineConnections)(LPCWSTR  pServer,
                                      LPBYTE  pPrinterEnum,
                                      DWORD  cbBuf,
                                      LPDWORD  pcbNeeded,
                                      LPDWORD  pcReturned);
  BOOL (*fpXcvData)(HANDLE  hXcv,
                    LPCWSTR  pszDataName,
                    PBYTE  pInputData,
                    DWORD  cbInputData,
                    PBYTE  pOutputData,
                    DWORD  cbOutputData,
                    PDWORD  pcbOutputNeeded,
                    PDWORD  pdwStatus);
  BOOL (*fpAddPrinterDriverEx)(LPWSTR  pName,
                               DWORD  Level,
                               LPBYTE  pDriverInfo,
                               DWORD  dwFileCopyFlags);
  BOOL (*fpSplReadPrinter)(HANDLE  hPrinter,
                           LPBYTE  *pBuf,
                           DWORD  cbBuf);
  BOOL (*fpDriverUnloadComplete)(LPWSTR  pDriverFile);
  BOOL (*fpGetSpoolFileInfo)(HANDLE  hPrinter,
                             LPWSTR  *pSpoolDir,
                             LPHANDLE  phFile,
                             HANDLE  hSpoolerProcess,
                             HANDLE  hAppProcess);
  BOOL (*fpCommitSpoolData)(HANDLE  hPrinter,
                            DWORD  cbCommit);
  BOOL (*fpCloseSpoolFileHandle)(HANDLE  hPrinter);
  BOOL (*fpFlushPrinter)(HANDLE  hPrinter,
                         LPBYTE  pBuf,
                         DWORD  cbBuf,
                         LPDWORD  pcWritten,
                         DWORD  cSleep);
  DWORD (*fpSendRecvBidiData)(HANDLE  hPort,
                              LPCWSTR  pAction,
                              PBIDI_REQUEST_CONTAINER  pReqData,
                              PBIDI_RESPONSE_CONTAINER  *ppResData);
} PRINTPROVIDOR, *LPPRINTPROVIDOR;

Members

fpOpenPrinter
(Required.) Pointer to the provider's OpenPrinter function, which is described in the Microsoft 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 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 (described in the Windows SDK documentation).
fpGetJob
(Required.) Pointer to the provider's GetJob function (described in the Windows SDK documentation).
fpEnumJobs
(Required.) Pointer to the provider's EnumJobs function (described in the Windows SDK documentation).
fpAddPrinter
(Optional. Can be NULL.) Pointer to the provider's AddPrinter function (described in the Windows SDK documentation).
fpDeletePrinter
(Optional. Can be NULL.) Pointer to the provider's DeletePrinter function (described in the Windows SDK documentation).
fpSetPrinter
(Required.) Pointer to the provider's SetPrinter function (described in the Windows SDK documentation).
fpGetPrinter
(Required.) Pointer to the provider's GetPrinter function (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation).
fpAddPrinterDriver
(Optional. Can be NULL.) Pointer to the provider's AddPrinterDriver function (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation).
fpEnumPrintProcessors
(Optional. Can be NULL.) Pointer to the provider's EnumPrintProcessors function (described in the Windows SDK documentation).
fpGetPrintProcessorDirectory
(Optional. Can be NULL.) Pointer to the provider's GetPrintProcessorDirectory function (described in the Windows SDK documentation).
fpDeletePrintProcessor
(Optional. Can be NULL.) Pointer to the provider's DeletePrintProcessor function (described in the Windows SDK documentation).
fpEnumPrintProcessorDatatypes
(Optional. Can be NULL.) Pointer to the provider's EnumPrintProcessorDatatypes function (described in the Windows SDK documentation).
fpStartDocPrinter
(Required.) Pointer to the provider's StartDocPrinter function (described in the Windows SDK documentation).
fpStartPagePrinter
(Optional. Can be NULL.) Pointer to the provider's StartPagePrinter function (described in the Windows SDK documentation).
fpWritePrinter
(Required.) Pointer to the provider's WritePrinter function (described in the Windows SDK documentation).
fpEndPagePrinter
(Optional. Can be NULL.) Pointer to the provider's EndPagePrinter function (described in the Windows SDK documentation).
fpAbortPrinter
(Required.) Pointer to the provider's AbortPrinter function (described in the Windows SDK documentation).
fpReadPrinter
(Optional. Can be NULL.) Pointer to the provider's ReadPrinter function (described in the Windows SDK documentation).
fpEndDocPrinter
(Required.) Pointer to the provider's EndDocPrinter function (described in the Windows SDK documentation).
fpAddJob
(Required.) Pointer to the provider's AddJob function (described in the Windows SDK documentation).
fpScheduleJob
(Required.) Pointer to the provider's ScheduleJob function (described in the Windows SDK documentation).
fpGetPrinterData
(Optional. Can be NULL.) Pointer to the provider's GetPrinterData function (described in the Windows SDK documentation).
fpSetPrinterData
(Optional. Can be NULL.) Pointer to the provider's SetPrinterData function (described in the Windows SDK documentation).
fpWaitForPrinterChange
Obsolete. Must be NULL.
fpClosePrinter
(Required.) Pointer to the provider's ClosePrinter function (described in the Windows SDK documentation). If a printer change notification object has been created, then the router calls the provider's FindClosePrinterChangeNotification function (described in the Windows SDK documentation) before calling ClosePrinter.
fpAddForm
(Optional. Can be NULL.) Pointer to the provider's AddForm function (described in the Windows SDK documentation).
fpDeleteForm
(Optional. Can be NULL.) Pointer to the provider's DeleteForm function (described in the Windows SDK documentation).
fpGetForm
(Optional. Can be NULL.) Pointer to the provider's GetForm function (described in the Windows SDK documentation).
fpSetForm
(Optional. Can be NULL.) Pointer to the provider's SetForm function (described in the Windows SDK documentation).
fpEnumForms
(Optional. Can be NULL.) Pointer to the provider's EnumForms function (described in the Windows SDK documentation).
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_UNKNOWN The provider does not support the specified server.
ROUTER_STOP_ROUTING The provider has enumerated the monitors on the specified server, and the router should not call other providers.

fpEnumPorts
(Required.) Pointer to the provider's EnumPorts 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 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 (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation).
fpDeletePrinterConnection
(Optional. Can be NULL.) Pointer to the provider's DeletePrinterConnection function (described in the Windows SDK documentation).
fpPrinterMessageBox
Not used. Must be NULL.
fpAddMonitor
(Optional. Can be NULL.) Pointer to the provider's AddMonitor function (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation).
fpGetPrinterDriverEx
(Optional. Can be NULL.) Pointer to the provider's GetPrinterDriverEx function (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation).
fpAddPortEx
(Optional. Can be NULL.) Pointer to the provider's AddPortEx function (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation).
fpDeletePrinterData
(Optional. Can be NULL.) Pointer to the provider's DeletePrinterData function (described in the Windows SDK documentation).
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 (described in the Windows SDK documentation).
fpGetPrinterDataEx
(Optional. Can be NULL.) Pointer to the provider's GetPrinterDataEx function (described in the Windows SDK documentation).
fpEnumPrinterDataEx
(Optional. Can be NULL.) Pointer to the provider's EnumPrinterDataEx function (described in the Windows SDK documentation).
fpEnumPrinterKey
(Optional. Can be NULL.) Pointer to the provider's EnumPrinterKey function (described in the Windows SDK documentation).
fpDeletePrinterDataEx
(Optional. Can be NULL.) Pointer to the provider's DeletePrinterDataEx function (described in the Windows SDK documentation).
fpDeletePrinterKey
(Optional. Can be NULL.) Pointer to the provider's DeletePrinterKey function (described in the Windows SDK documentation).
fpSeekPrinter
For internal use only. Must be NULL.
fpDeletePrinterDriverEx
(Optional. Can be NULL.) Pointer to the provider's DeletePrinterDriverEx function (described in the Windows SDK documentation). 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 (described in the Windows SDK documentation). 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.

Comments

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

Headers: Declared in Winsplp.h. Include Winsplp.h.

See Also

InitializePrintProvidor, FindFirstPrinterChangeNotification, RefreshPrinterChangeNotification, XcvData, SendRecvBidiData

APIScan Requirements

Header: winsplp.h.
Function: PRINTPROVIDOR
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker