Struttura PRINTPROVIDOR (winsplp.h)

Avviso

A partire da Windows 10, le API che supportano provider di stampa di terze parti sono deprecate. Microsoft non consiglia alcun investimento in provider di stampa di terze parti. Inoltre, nei Windows 8 e nei prodotti più recenti in cui è disponibile il modello di driver di stampa v4, i provider di stampa di terze parti potrebbero non creare o gestire code che usano driver di stampa v4.

La struttura PRINTPROVIDOR viene utilizzata come parametro per la funzione InitializePrintProvidor di un provider di stampa. Tutti i valori dei membri della struttura vengono forniti dal provider.

Sintassi

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

(Obbligatorio).) Puntatore alla funzione OpenPrinter del provider. Tuttavia, a livello di provider, questa funzione deve fornire uno dei valori restituiti DWORD elencati nella tabella seguente.

Valore restituito Definizione
ROUTER_SUCCESS Il provider supporta la stampante specificata e l'ha aperta.
ROUTER_STOP_ROUTING Il provider supporta la stampante specificata, ma si è verificato un errore e non è stato possibile aprire la stampante. Si presuppone che nessun altro provider possa supportare la stampante. La funzione deve chiamare SetLastError.
ROUTER_UNKNOWN Il provider non supporta la stampante specificata. La funzione deve chiamare SetLastError e specificare ERROR_INVALID_NAME.

Il router chiama ogni provider fino a quando uno di essi non restituisce ROUTER_SUCCESS o ROUTER_STOP_ROUTING. Se il provider restituisce ROUTER_SUCCESS, deve restituire anche un handle univoco. Per altre informazioni, vedere Introduzione ai provider di stampa. Il router tenta prima di tutto di chiamare la funzione OpenPrinterEx del provider. Se tale funzione non è supportata, il router chiama OpenPrinter.

fpSetJob

(Obbligatorio).) Puntatore alla funzione SetJob del provider.

fpGetJob

(Obbligatorio).) Puntatore alla funzione GetJob del provider.

fpEnumJobs

(Obbligatorio).) Puntatore alla funzione EnumJobs del provider.

fpAddPrinter

(Facoltativo. Può essere NULL. Puntatore alla funzione AddPrinter del provider.

fpDeletePrinter

(Facoltativo. Può essere NULL. Puntatore alla funzione DeletePrinter del provider.

fpSetPrinter

(Obbligatorio).) Puntatore alla funzione SetPrinter del provider.

fpGetPrinter

(Obbligatorio).) Puntatore alla funzione GetPrinter del provider. Se si sta scrivendo un provider di stampa di rete e GetPrinter restituisce una struttura PRINTER_INFO_2 , la funzione deve fornire solo i membri della struttura cJobs e Status . Il provider di stampa locale fornisce il resto dei membri della struttura.

fpEnumPrinters

(Obbligatorio).) Puntatore alla funzione EnumPrinters del provider.

fpAddPrinterDriver

(Facoltativo. Può essere NULL. Puntatore alla funzione AddPrinterDriver del provider. Se il provider non supporta il driver o il server specificato, deve specificare ERROR_INVALID_NAME a SetLastError prima di restituire FALSE.

fpEnumPrinterDrivers

(Facoltativo. Può essere NULL. Puntatore alla funzione EnumPrinterDrivers del provider. Se il provider non supporta il server specificato, deve specificare ERROR_INVALID_NAME su SetLastError prima di restituire FALSE.

fpGetPrinterDriver

(Facoltativo. Può essere NULL. Puntatore alla funzione GetPrinterDriver del provider. Il router tenta prima di tutto di chiamare la funzione GetPrinterDriverEx del provider. Se tale funzione non è supportata, il router chiama GetPrinterDriver.

fpGetPrinterDriverDirectory

(Facoltativo. Può essere NULL. Puntatore alla funzione GetPrinterDriverDirectory del provider. Se il provider non supporta il server specificato, deve specificare ERROR_INVALID_NAME su SetLastError prima di restituire FALSE.

fpDeletePrinterDriver

(Facoltativo. Può essere NULL. Puntatore alla funzione DeletePrinterDriver del provider. Se il provider non supporta il server specificato, deve specificare ERROR_INVALID_NAME su SetLastError prima di restituire FALSE.

fpAddPrintProcessor

(Facoltativo. Può essere NULL. Puntatore alla funzione AddPrintProcessor del provider.

fpEnumPrintProcessors

(Facoltativo. Può essere NULL. Puntatore alla funzione EnumPrintProcessors del provider.

fpGetPrintProcessorDirectory

(Facoltativo. Può essere NULL. Puntatore alla funzione GetPrintProcessorDirectory del provider.

fpDeletePrintProcessor

(Facoltativo. Può essere NULL. Puntatore alla funzione DeletePrintProcessor del provider.

fpEnumPrintProcessorDatatypes

(Facoltativo. Può essere NULL. Puntatore alla funzione EnumPrintProcessorDatatypes del provider.

fpStartDocPrinter

(Obbligatorio).) Puntatore alla funzione StartDocPrinter del provider.

fpStartPagePrinter

(Facoltativo. Può essere NULL. Puntatore alla funzione StartPagePrinter del provider.

fpWritePrinter

(Obbligatorio).) Puntatore alla funzione WritePrinter del provider.

fpEndPagePrinter

(Facoltativo. Può essere NULL. Puntatore alla funzione EndPagePrinterdel provider.

fpAbortPrinter

(Obbligatorio).) Puntatore alla funzione AbortPrinter del provider.

fpReadPrinter

(Facoltativo. Può essere NULL. Puntatore alla funzione ReadPrinter del provider.

fpEndDocPrinter

(Obbligatorio).) Puntatore alla funzione EndDocPrinter del provider.

fpAddJob

(Obbligatorio).) Puntatore alla funzione AddJob del provider.

fpScheduleJob

(Obbligatorio).) Puntatore alla funzione ScheduleJob del provider.

fpGetPrinterData

(Facoltativo. Può essere NULL. Puntatore alla funzione GetPrinterData del provider.

fpSetPrinterData

(Facoltativo. Può essere NULL. Puntatore alla funzione SetPrinterData del provider.

fpWaitForPrinterChange

Obsoleta. Deve essere NULL.

fpClosePrinter

(Obbligatorio).) Puntatore alla funzione ClosePrinter del provider. Se è stato creato un oggetto notifica di modifica della stampante, il router chiama la funzione FindClosePrinterChangeNotification del provider prima di chiamare ClosePrinter.

fpAddForm

(Facoltativo. Può essere NULL. Puntatore alla funzione AddForm del provider.

fpDeleteForm

(Facoltativo. Può essere NULL. Puntatore alla funzione DeleteForm del provider.

fpGetForm

(Facoltativo. Può essere NULL. Puntatore alla funzione GetForm del provider.

fpSetForm

(Facoltativo. Può essere NULL. Puntatore alla funzione SetForm del provider.

fpEnumForms

(Facoltativo. Può essere NULL. Puntatore alla funzione EnumForms del provider.

fpEnumMonitors

(Facoltativo. Può essere NULL. Puntatore alla funzione EnumMonitors del provider, descritta nella documentazione Windows SDK. Tuttavia, a livello di provider, questa funzione deve fornire uno dei valori restituiti DWORD elencati nella tabella seguente.

Valore restituito Definizione
ROUTER_SUCCESS Il provider ha enumerato i monitoraggi nel server specificato.
ROUTER_STOP_ROUTING Il provider ha enumerato i monitoraggi nel server specificato e il router non deve chiamare altri provider.
ROUTER_UNKNOWN Il provider non supporta il server specificato.

fpEnumPorts

Valore restituito Definizione
ROUTER_SUCCESS Il provider ha enumerato le porte nel server specificato.
ROUTER_STOP_ROUTING Il provider ha enumerato le porte nel server specificato e il router non deve chiamare altri provider.
ROUTER_UNKNOWN Il provider non supporta il server specificato.

fpAddPort

(Facoltativo. Può essere NULL. Puntatore alla funzione AddPort del provider. Se il provider non supporta la porta specificata, deve fornire ERROR_NOT_SUPPORTED a SetLastError prima di restituire FALSE.

fpConfigurePort

(Obbligatorio).) Puntatore alla funzione ConfigurePort del provider. Se la funzione fornisce ERROR_NOT_SUPPORTED, ERROR_INVALID_NAME o ERROR_UNKNOWN_PORT a SetLastError, il router tenterà di chiamare un altro provider.

fpDeletePort

(Obbligatorio).) Puntatore alla funzione DeletePort del provider. Se il provider non supporta la porta specificata, deve fornire ERROR_NOT_SUPPORTED a SetLastError prima di restituire FALSE.

fpCreatePrinterIC

Solo per uso interno. Deve essere NULL.

fpPlayGdiScriptOnPrinterIC

Solo per uso interno. Deve essere NULL.

fpDeletePrinterIC

Solo per uso interno. Deve essere NULL.

fpAddPrinterConnection

(Facoltativo. Può essere NULL. Puntatore alla funzione AddPrinterConnection del provider.

fpDeletePrinterConnection

(Facoltativo. Può essere NULL. Puntatore alla funzione DeletePrinterConnection del provider.

fpPrinterMessageBox

Non usato. Deve essere NULL.

fpAddMonitor

(Facoltativo. Può essere NULL. Puntatore alla funzione AddMonitor del provider. Se il provider non supporta il monitoraggio specificato, deve fornire ERROR_INVALID_NAME a SetLastError prima di restituire FALSE.

fpDeleteMonitor

(Facoltativo. Può essere NULL. Puntatore alla funzione DeleteMonitor del provider. Se il provider non supporta il monitoraggio specificato, deve fornire ERROR_INVALID_NAME a SetLastError prima di restituire FALSE.

fpResetPrinter

(Facoltativo. Può essere NULL. Puntatore alla funzione ResetPrinter del provider.

fpGetPrinterDriverEx

(Facoltativo. Può essere NULL. Puntatore alla funzione GetPrinterDriverEx del provider. Se GetPrinterDriverEx non è supportato, il router tenta di chiamare GetPrinterDriver.

fpFindFirstPrinterChangeNotification

(Facoltativo. Può essere NULL. Puntatore alla funzione FindFirstPrinterChangeNotification del provider.

fpFindClosePrinterChangeNotification

(Facoltativo. Può essere NULL. Puntatore alla funzione FindClosePrinterChangeNotification del provider.

fpAddPortEx

(Facoltativo. Può essere NULL. Puntatore alla funzione AddPortEx del provider. Se il provider non supporta la porta specificata, deve fornire ERROR_NOT_SUPPORTED a SetLastError prima di restituire FALSE.

fpShutDown

Solo per uso interno. Deve essere NULL.

fpRefreshPrinterChangeNotification

(Facoltativo. Può essere NULL. Puntatore alla funzione RefreshPrinterChangeNotification del provider.

fpOpenPrinterEx

Solo per uso interno. Deve essere NULL.

fpAddPrinterEx

Solo per uso interno. Deve essere NULL.

fpSetPort

(Facoltativo. Può essere NULL. Puntatore alla funzione SetPort del provider. Se la funzione fornisce ERROR_NOT_SUPPORTED, ERROR_INVALID_NAME o ERROR_UNKNOWN_PORT a SetLastError, il router tenterà di chiamare un altro provider.

fpEnumPrinterData

(Facoltativo. Può essere NULL. Puntatore alla funzione EnumPrinterData del provider.

fpDeletePrinterData

(Facoltativo. Può essere NULL. Puntatore alla funzione DeletePrinterData del provider.

fpClusterSplOpen

Solo per uso interno. Deve essere NULL.

fpClusterSplClose

Solo per uso interno. Deve essere NULL.

fpClusterSplIsAlive

Solo per uso interno. Deve essere NULL.

fpSetPrinterDataEx

(Facoltativo. Può essere NULL. Puntatore alla funzione SetPrinterDataEx del provider.

fpGetPrinterDataEx

(Facoltativo. Può essere NULL. Puntatore alla funzione GetPrinterDataEx del provider.

fpEnumPrinterDataEx

(Facoltativo. Può essere NULL. Puntatore alla funzione EnumPrinterDataEx del provider.

fpEnumPrinterKey

(Facoltativo. Può essere NULL. Puntatore alla funzione EnumPrinterKey del provider.

fpDeletePrinterDataEx

(Facoltativo. Può essere NULL. Puntatore alla funzione DeletePrinterDataEx del provider.

fpDeletePrinterKey

(Facoltativo. Può essere NULL. Puntatore alla funzione DeletePrinterKey del provider.

fpSeekPrinter

Solo per uso interno. Deve essere NULL.

fpDeletePrinterDriverEx

(Facoltativo. Può essere NULL. Puntatore alla funzione DeletePrinterDriverEx del provider. Se il provider non supporta il server specificato, deve specificare ERROR_INVALID_NAME a SetLastError prima di restituire FALSE.

fpAddPerMachineConnection

Solo per uso interno. Deve essere NULL.

fpDeletePerMachineConnection

Solo per uso interno. Deve essere NULL.

fpEnumPerMachineConnections

Solo per uso interno. Deve essere NULL.

fpXcvData

(Facoltativo. Può essere NULL. Puntatore alla funzione XcvData del provider.

fpAddPrinterDriverEx

(Facoltativo. Può essere NULL. Puntatore alla funzione AddPrinterDriverEx del provider. Se il provider non supporta il server specificato, deve specificare ERROR_INVALID_NAME a SetLastError prima di restituire FALSE.

fpSplReadPrinter

Solo per uso interno. Deve essere NULL.

fpDriverUnloadComplete

Solo per uso interno. Deve essere NULL.

fpGetSpoolFileInfo

Solo per uso interno. Deve essere NULL.

fpCommitSpoolData

Solo per uso interno. Deve essere NULL.

fpCloseSpoolFileHandle

Solo per uso interno. Deve essere NULL.

fpFlushPrinter

Solo per uso interno. Deve essere NULL.

fpSendRecvBidiData

(Facoltativo. Può essere NULL. Puntatore alla funzione SendRecvBidiData del provider. Se questo parametro è NULL, significa che il provider non supporta la comunicazione bidi.

fpAddPrinterConnection2

Solo per uso interno. Deve essere NULL.

fpGetPrintClassObject

Solo per uso interno. Deve essere NULL.

fpReportJobProcessingProgress

Solo per uso interno. Deve essere NULL.

fpEnumAndLogProvidorObjects

Solo per uso interno. Deve essere NULL.

fpInternalGetPrinterDriver

Solo per uso interno. Deve essere NULL.

fpFindCompatibleDriver

Solo per uso interno. Deve essere NULL.

fpInstallPrinterDriverPackageFromConnection

Solo per uso interno. Deve essere NULL.

fpGetJobNamedPropertyValue

Solo per uso interno. Deve essere NULL.

fpSetJobNamedProperty

Solo per uso interno. Deve essere NULL.

fpDeleteJobNamedProperty

Solo per uso interno. Deve essere NULL.

fpEnumJobNamedProperties

Solo per uso interno. Deve essere NULL.

fpPowerEvent

Solo per uso interno. Deve essere NULL.

fpGetUserPropertyBag

Solo per uso interno. Deve essere NULL.

fpCanShutdown

Solo per uso interno. Deve essere NULL.

fpLogJobInfoForBranchOffice

Solo per uso interno. Deve essere NULL.

fpRegeneratePrintDeviceCapabilities

Solo per uso interno. Deve essere NULL.

fpPrintSupportOperation

Solo per uso interno. Deve essere NULL.

fpIppCreateJobOnPrinter

Solo per uso interno. Deve essere NULL.

fpIppGetJobAttributes

Solo per uso interno. Deve essere NULL.

fpIppSetJobAttributes

Solo per uso interno. Deve essere NULL.

fpIppGetPrinterAttributes

Solo per uso interno. Deve essere NULL.

fpIppSetPrinterAttributes

Solo per uso interno. Deve essere NULL.

fpIppCreateJobOnPrinterWithAttributes

Solo per uso interno. Deve essere NULL.

Commenti

I puntatori a funzioni sono elencati nell'ordine specificato nella struttura PRINTPROVIDOR. Per visualizzare le descrizioni delle funzioni raggruppate in base alle funzionalità correlate, vedere Funzioni definite dai provider di stampa.

Requisiti

Requisito Valore
Intestazione winsplp.h (include Winsplp.h)

Vedi anche

FindFirstPrinterChangeNotification

InitializePrintProvidor

RefreshPrinterChangeNotification

SendRecvBidiData

XcvData