winsplp.h (PRINTPROVIDOR 結構)
警告
從 Windows 10 開始,支援第三方列印提供者的 API 已被取代。 Microsoft 不建議對第三方列印提供者進行任何投資。 此外,在 v4 列印驅動程式模型的 Windows 8 和較新版本產品上,第三方列印提供者可能無法建立或管理使用 v4 列印驅動程式的佇列。
PRINTPROVIDOR 結構會當做列印提供者 InitializePrintProvidor 函式的參數使用。 提供者會提供所有結構成員值。
語法
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;
成員
fpOpenPrinter
(Required.) 提供者 OpenPrinter 函 式的指標。 不過,在提供者層級,此函式必須提供下表所列的其中一個 DWORD 傳回值。
傳回值 | 定義 |
---|---|
ROUTER_SUCCESS | 提供者支援指定的印表機,並已開啟它。 |
ROUTER_STOP_ROUTING | 提供者支援指定的印表機,但發生錯誤且無法開啟印表機。 假設沒有其他提供者可以支援印表機。 函式必須呼叫 SetLastError。 |
ROUTER_UNKNOWN | 提供者不支援指定的印表機。 函式必須呼叫 SetLastError ,並指定ERROR_INVALID_NAME。 |
路由器會呼叫每個提供者,直到其中一個提供者傳回ROUTER_SUCCESS或ROUTER_STOP_ROUTING為止。 如果提供者傳回ROUTER_SUCCESS,它也必須傳回唯一句柄。 如需詳細資訊,請參閱 列印提供者簡介.) 路由器會先嘗試呼叫提供者的 OpenPrinterEx 函 式。 如果不支援該函式,路由器會呼叫 OpenPrinter。
fpSetJob
(Required.) 提供者 SetJob 函式的指標。
fpGetJob
(Required.) 提供者 GetJob 函式的指標。
fpEnumJobs
(Required.) 提供者 EnumJobs 函式的指標。
fpAddPrinter
(選擇性。可以是 NULL.) 提供者 AddPrinter 函 式的指標。
fpDeletePrinter
(選擇性。可以是 NULL.) 提供者 DeletePrinter 函 式的指標。
fpSetPrinter
(Required.) 提供者 SetPrinter 函 式的指標。
fpGetPrinter
(Required.) 提供者 GetPrinter 函 式的指標。 如果您要 撰寫網路列印提供者 ,而 GetPrinter 傳回 PRINTER_INFO_2 結構,則函式應該只提供 cJobs 和 Status 結構成員。 本機 列印提供者) 提供結構成員的其餘部分。
fpEnumPrinters
(Required.) 提供者 EnumPrinters 函式的指標。
fpAddPrinterDriver
(選擇性。可以是 NULL.) 提供者 AddPrinterDriver 函 式的指標。 如果提供者不支援指定的驅動程式或伺服器,則應該先指定ERROR_INVALID_NAME SetLastError 再傳回 FALSE。
fpEnumPrinterDrivers
(選擇性。可以是 NULL.) 提供者 EnumPrinterDrivers 函 式的指標。 如果提供者不支援指定的伺服器,則應該先指定ERROR_INVALID_NAME SetLastError 再傳回 FALSE。
fpGetPrinterDriver
(選擇性。可以是 NULL.) 提供者 GetPrinterDriver 函 式的指標。 路由器會先嘗試呼叫提供者的 GetPrinterDriverEx 函 式。 如果不支援該函式,路由器會呼叫 GetPrinterDriver。
fpGetPrinterDriverDirectory
(選擇性。可以是 NULL.) 提供者 GetPrinterDriverDirectory 函式的指標。 如果提供者不支援指定的伺服器,則應該先指定ERROR_INVALID_NAME SetLastError 再傳回 FALSE。
fpDeletePrinterDriver
(選擇性。可以是 NULL.) 提供者 DeletePrinterDriver 函 式的指標。 如果提供者不支援指定的伺服器,則應該先指定ERROR_INVALID_NAME SetLastError 再傳回 FALSE。
fpAddPrintProcessor
(選擇性。可以是 NULL.) 提供者 AddPrintProcessor 函式的指標。
fpEnumPrintProcessors
(選擇性。可以是 NULL.) 提供者 EnumPrintProcessors 函 式的指標。
fpGetPrintProcessorDirectory
(選擇性。可以是 NULL.) 提供者 GetPrintProcessorDirectory 函式的指標。
fpDeletePrintProcessor
(選擇性。可以是 NULL.) 提供者 DeletePrintProcessor 函 式的指標。
fpEnumPrintProcessorDatatypes
(選擇性。可以是 NULL.) 提供者 EnumPrintProcessorDatatypes 函 式的指標。
fpStartDocPrinter
(Required.) 提供者 StartDocPrinter 函 式的指標。
fpStartPagePrinter
(選擇性。可以是 NULL.) 提供者 StartPagePrinter 函 式的指標。
fpWritePrinter
(Required.) 提供者 WritePrinter 函 式的指標。
fpEndPagePrinter
(選擇性。可以是 NULL.) 提供者 EndPagePrinter 函式的指標。
fpAbortPrinter
(Required.) 提供者 的 AbortPrinter 函 式指標。
fpReadPrinter
(選擇性。可以是 NULL.) 提供者 ReadPrinter 函 式的指標。
fpEndDocPrinter
(Required.) 提供者 EndDocPrinter 函 式的指標。
fpAddJob
(Required.) 提供者 AddJob 函式的指標。
fpScheduleJob
(Required.) 提供者 ScheduleJob 函式的指標。
fpGetPrinterData
(選擇性。可以是 NULL.) 提供者 GetPrinterData 函式的指標。
fpSetPrinterData
(選擇性。可以是 NULL.) 提供者 SetPrinterData 函式的指標。
fpWaitForPrinterChange
已過時。 必須是 Null。
fpClosePrinter
(Required.) 提供者 ClosePrinter 函 式的指標。 如果已建立印表機變更通知物件,路由器會在呼叫 ClosePrinter 之前呼叫提供者的 FindClosePrinterChangeNotification 函式。
fpAddForm
(選擇性。可以是 NULL.) 提供者 AddForm 函式的指標。
fpDeleteForm
(選擇性。可以是 NULL.) 提供者 DeleteForm 函式的指標。
fpGetForm
(選擇性。可以是 NULL.) 提供者 GetForm 函式的指標。
fpSetForm
(選擇性。可以是 NULL.) 提供者 SetForm 函式的指標。
fpEnumForms
(選擇性。可以是 NULL.) 提供者 EnumForms 函 式的指標。
fpEnumMonitors
(選擇性。可以是 NULL.) 提供者 EnumMonitors 函式的指標,如 Windows SDK 檔中所述。 不過,在提供者層級,此函式必須提供下表所列的其中一個 DWORD 傳回值。
傳回值 | 定義 |
---|---|
ROUTER_SUCCESS | 提供者已列舉指定伺服器上的監視器。 |
ROUTER_STOP_ROUTING | 提供者已列舉指定伺服器上的監視,而且路由器不應該呼叫其他提供者。 |
ROUTER_UNKNOWN | 提供者不支援指定的伺服器。 |
fpEnumPorts
傳回值 | 定義 |
---|---|
ROUTER_SUCCESS | 提供者已列舉指定伺服器上的埠。 |
ROUTER_STOP_ROUTING | 提供者已列舉指定伺服器上的埠,而且路由器不應該呼叫其他提供者。 |
ROUTER_UNKNOWN | 提供者不支援指定的伺服器。 |
fpAddPort
(選擇性。可以是 NULL.) 提供者 AddPort 函式的指標。 如果提供者不支援指定的埠,則必須先將ERROR_NOT_SUPPORTED提供給 SetLastError ,才能傳回 FALSE。
fpConfigurePort
(Required.) 提供者 ConfigurePort 函式的指標。 如果函式提供ERROR_NOT_SUPPORTED、ERROR_INVALID_NAME或ERROR_UNKNOWN_PORT 給 SetLastError,路由器會嘗試呼叫另一個提供者。
fpDeletePort
(Required.) 提供者 DeletePort 函式的指標。 如果提供者不支援指定的埠,它必須先將ERROR_NOT_SUPPORTED提供給 SetLastError ,才能傳回 FALSE。
fpCreatePrinterIC
僅供內部使用。 必須是 Null。
fpPlayGdiScriptOnPrinterIC
僅供內部使用。 必須是 Null。
fpDeletePrinterIC
僅供內部使用。 必須是 Null。
fpAddPrinterConnection
(選擇性。可以是 NULL.) 提供者 AddPrinterConnection 函式的指標。
fpDeletePrinterConnection
(選擇性。可以是 NULL.) 提供者 DeletePrinterConnection 函式的指標。
fpPrinterMessageBox
未使用。 必須是 Null。
fpAddMonitor
(選擇性。可以是 NULL.) 提供者 AddMonitor 函式的指標。 如果提供者不支援指定的監視器,則必須先將ERROR_INVALID_NAME提供給 SetLastError ,才能傳回 FALSE。
fpDeleteMonitor
(選擇性。可以是 NULL.) 提供者 DeleteMonitor 函式的指標。 如果提供者不支援指定的監視器,則必須先將ERROR_INVALID_NAME提供給 SetLastError ,才能傳回 FALSE。
fpResetPrinter
(選擇性。可以是 NULL.) 提供者 ResetPrinter 函式的指標。
fpGetPrinterDriverEx
(選擇性。可以是 NULL.) 提供者 GetPrinterDriverEx 函式的指標。 如果不支援 GetPrinterDriverEx ,路由器會嘗試呼叫 GetPrinterDriver。
fpFindFirstPrinterChangeNotification
(選擇性。可以是 NULL.) 提供者 FindFirstPrinterChangeNotification 函式的指標。
fpFindClosePrinterChangeNotification
(選擇性。可以是 NULL.) 提供者 FindClosePrinterChangeNotification 函式的指標。
fpAddPortEx
(選擇性。可以是 NULL.) 提供者 AddPortEx 函式的指標。 如果提供者不支援指定的埠,它必須先將ERROR_NOT_SUPPORTED提供給 SetLastError ,才能傳回 FALSE。
fpShutDown
僅供內部使用。 必須是 Null。
fpRefreshPrinterChangeNotification
(選擇性。可以是 NULL.) 提供者 RefreshPrinterChangeNotification 函式的指標。
fpOpenPrinterEx
僅供內部使用。 必須是 Null。
fpAddPrinterEx
僅供內部使用。 必須是 Null。
fpSetPort
(選擇性。可以是 NULL.) 提供者 SetPort 函式的指標。 如果函式提供ERROR_NOT_SUPPORTED、ERROR_INVALID_NAME或ERROR_UNKNOWN_PORT給 SetLastError,路由器會嘗試呼叫另一個提供者。
fpEnumPrinterData
(選擇性。可以是 NULL.) 提供者 EnumPrinterData 函式的指標。
fpDeletePrinterData
(選擇性。可以是 NULL.) 提供者 DeletePrinterData 函式的指標。
fpClusterSplOpen
僅供內部使用。 必須是 Null。
fpClusterSplClose
僅供內部使用。 必須是 Null。
fpClusterSplIsAlive
僅供內部使用。 必須是 Null。
fpSetPrinterDataEx
(選擇性。可以是 NULL.) 提供者 SetPrinterDataEx 函式的指標。
fpGetPrinterDataEx
(選擇性。可以是 NULL.) 提供者 GetPrinterDataEx 函式的指標。
fpEnumPrinterDataEx
(選擇性。可以是 NULL.) 提供者 的 EnumPrinterDataEx 函式指標。
fpEnumPrinterKey
(選擇性。可以是 NULL.) 提供者 EnumPrinterKey 函式的指標。
fpDeletePrinterDataEx
(選擇性。可以是 NULL.) 提供者 DeletePrinterDataEx 函式的指標。
fpDeletePrinterKey
(選擇性。可以是 NULL.) 提供者 DeletePrinterKey 函式的指標。
fpSeekPrinter
僅供內部使用。 必須是 Null。
fpDeletePrinterDriverEx
(選擇性。可以是 NULL.) 提供者 DeletePrinterDriverEx 函式的指標。 如果提供者不支援指定的伺服器,則應該先將ERROR_INVALID_NAME指定為 SetLastError ,然後再傳回 FALSE。
fpAddPerMachineConnection
僅供內部使用。 必須是 Null。
fpDeletePerMachineConnection
僅供內部使用。 必須是 Null。
fpEnumPerMachineConnections
僅供內部使用。 必須是 Null。
fpXcvData
(選擇性。可以是 NULL.) 提供者 XcvData 函式的指標。
fpAddPrinterDriverEx
(選擇性。可以是 NULL.) 提供者 AddPrinterDriverEx 函 式的指標。 如果提供者不支援指定的伺服器,則應該先將ERROR_INVALID_NAME指定為 SetLastError ,然後再傳回 FALSE。
fpSplReadPrinter
僅供內部使用。 必須是 Null。
fpDriverUnloadComplete
僅供內部使用。 必須是 Null。
fpGetSpoolFileInfo
僅供內部使用。 必須是 Null。
fpCommitSpoolData
僅供內部使用。 必須是 Null。
fpCloseSpoolFileHandle
僅供內部使用。 必須是 Null。
fpFlushPrinter
僅供內部使用。 必須是 Null。
fpSendRecvBidiData
(選擇性。可以是 NULL.) 提供者 SendRecvBidiData 函式的指標。 如果此參數為 NULL,表示提供者不支援 bidi 通訊。
fpAddPrinterConnection2
僅供內部使用。 必須是 Null。
fpGetPrintClassObject
僅供內部使用。 必須是 Null。
fpReportJobProcessingProgress
僅供內部使用。 必須是 Null。
fpEnumAndLogProvidorObjects
僅供內部使用。 必須是 Null。
fpInternalGetPrinterDriver
僅供內部使用。 必須是 Null。
fpFindCompatibleDriver
僅供內部使用。 必須是 Null。
fpInstallPrinterDriverPackageFromConnection
僅供內部使用。 必須是 Null。
fpGetJobNamedPropertyValue
僅供內部使用。 必須是 Null。
fpSetJobNamedProperty
僅供內部使用。 必須是 Null。
fpDeleteJobNamedProperty
僅供內部使用。 必須是 Null。
fpEnumJobNamedProperties
僅供內部使用。 必須是 Null。
fpPowerEvent
僅供內部使用。 必須是 Null。
fpGetUserPropertyBag
僅供內部使用。 必須是 Null。
fpCanShutdown
僅供內部使用。 必須是 Null。
fpLogJobInfoForBranchOffice
僅供內部使用。 必須是 Null。
fpRegeneratePrintDeviceCapabilities
僅供內部使用。 必須是 Null。
fpPrintSupportOperation
僅供內部使用。 必須是 Null。
fpIppCreateJobOnPrinter
僅供內部使用。 必須是 Null。
fpIppGetJobAttributes
僅供內部使用。 必須是 Null。
fpIppSetJobAttributes
僅供內部使用。 必須是 Null。
fpIppGetPrinterAttributes
僅供內部使用。 必須是 Null。
fpIppSetPrinterAttributes
僅供內部使用。 必須是 Null。
fpIppCreateJobOnPrinterWithAttributes
僅供內部使用。 必須是 Null。
備註
函式指標會依照在 PRINTPROVIDOR 結構內指定的順序列出。 若要查看依相關功能分組的函式描述,請參閱 列印提供者所定義的函式。
規格需求
需求 | 值 |
---|---|
標頭 | winsplp.h (包含 Winsplp.h) |
另請參閱
FindFirstPrinterChangeNotification