Поделиться через


Структура PRINTPROVIDOR (winsplp.h)

Предупреждение

Начиная с Windows 10 интерфейсы API, поддерживающие сторонних поставщиков печати, являются устаревшими. Корпорация Майкрософт не рекомендует инвестировать в сторонних поставщиков печати. Кроме того, в Windows 8 и более новых продуктах, где доступна модель драйвера печати версии 4, сторонние поставщики печати не могут создавать очереди, использующие драйверы печати версии 4, или управлять ими.

Структура 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

(Обязательно.) Указатель на функцию OpenPrinter поставщика. Однако на уровне поставщика эта функция должна предоставлять одно из возвращаемых значений DWORD, перечисленных в следующей таблице.

Возвращаемое значение Определение
ROUTER_SUCCESS Поставщик поддерживает указанный принтер и открыл его.
ROUTER_STOP_ROUTING Поставщик поддерживает указанный принтер, но произошла ошибка, и принтер не удалось открыть. Предполагается, что ни один другой поставщик не может поддерживать принтер. Функция должна вызывать SetLastError.
ROUTER_UNKNOWN Поставщик не поддерживает указанный принтер. Функция должна вызвать SetLastError и указать ERROR_INVALID_NAME.

Маршрутизатор вызывает каждого поставщика, пока один из них не вернет ROUTER_SUCCESS или ROUTER_STOP_ROUTING. Если поставщик возвращает ROUTER_SUCCESS, он также должен возвращать уникальный дескриптор. Дополнительные сведения см. в статье Общие сведения о поставщиках печати.) Маршрутизатор сначала пытается вызвать функцию OpenPrinterEx поставщика. Если эта функция не поддерживается, маршрутизатор вызывает OpenPrinter.

fpSetJob

(Обязательно.) Указатель на функцию SetJob поставщика.

fpGetJob

(Обязательно.) Указатель на функцию GetJob поставщика.

fpEnumJobs

(Обязательно.) Указатель на функцию EnumJobs поставщика.

fpAddPrinter

(Необязательно. Может иметь значение NULL.) Указатель на функцию AddPrinter поставщика.

fpDeletePrinter

(Необязательно. Может иметь значение NULL.) Указатель на функцию DeletePrinter поставщика.

fpSetPrinter

(Обязательно.) Указатель на функцию SetPrinter поставщика.

fpGetPrinter

(Обязательно.) Указатель на функцию GetPrinter поставщика. Если вы пишете поставщик сетевой печати и GetPrinter возвращает структуру PRINTER_INFO_2 , функция должна предоставлять только элементы структуры cJobs и Status . Локальный поставщик печати) предоставляет остальные элементы структуры.

fpEnumPrinters

(Обязательно.) Указатель на функцию 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

(Обязательно.) Указатель на функцию StartDocPrinter поставщика.

fpStartPagePrinter

(Необязательно. Может иметь значение NULL.) Указатель на функцию StartPagePrinter поставщика.

fpWritePrinter

(Обязательно.) Указатель на функцию WritePrinter поставщика.

fpEndPagePrinter

(Необязательно. Может иметь значение NULL.) Указатель на функцию EndPagePrinterпоставщика.

fpAbortPrinter

(Обязательно.) Указатель на функцию AbortPrinter поставщика.

fpReadPrinter

(Необязательно. Может иметь значение NULL.) Указатель на функцию ReadPrinter поставщика.

fpEndDocPrinter

(Обязательно.) Указатель на функцию EndDocPrinter поставщика.

fpAddJob

(Обязательно.) Указатель на функцию AddJob поставщика.

fpScheduleJob

(Обязательно.) Указатель на функцию ScheduleJob поставщика.

fpGetPrinterData

(Необязательно. Может иметь значение NULL.) Указатель на функцию GetPrinterData поставщика.

fpSetPrinterData

(Необязательно. Может иметь значение NULL.) Указатель на функцию SetPrinterData поставщика.

fpWaitForPrinterChange

Является устаревшей. Должен иметь значение NULL.

fpClosePrinter

(Обязательно.) Указатель на функцию ClosePrinter поставщика. Если объект уведомления об изменении принтера создан, маршрутизатор вызывает функцию FindClosePrinterChangeNotification поставщика перед вызовом ClosePrinter.

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

(Обязательно.) Указатель на функцию ConfigurePort поставщика. Если функция предоставляет ERROR_NOT_SUPPORTED, ERROR_INVALID_NAME или ERROR_UNKNOWN_PORT в SetLastError, маршрутизатор попытается вызвать другого поставщика.

fpDeletePort

(Обязательно.) Указатель на функцию 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

InitializePrintProvidor

RefreshPrinterChangeNotification

SendRecvBidiData

XcvData