- wspiapi.h : __inline -> FORCEINLINE, alter _WSPIAPI_STRNCPY_S and _WSPIAPI_SPRINTF_S_1
- winspool.h : Add missing PRINTER_NOTIFY_OPTIONS(_TYPE)
- ws2spi.h and also compstui.h : Group some related definitions.
- Add wine/ddk/winsplp.h and winddiui.h wrappers around our files, as wine code wants them in ddk.
svn path=/branches/header-work/; revision=46757
+++ /dev/null
-#pragma once
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* DEFINES */
-
-#define PRINTER_NOTIFY_STATUS_ENDPOINT 1
-#define PRINTER_NOTIFY_STATUS_POLL 2
-#define PRINTER_NOTIFY_STATUS_INFO 4
-
-#define ROUTER_UNKNOWN 0
-#define ROUTER_SUCCESS 1
-#define ROUTER_STOP_ROUTING 2
-
-#if (NTDDI_VERSION >= NTDDI_WS03)
-#ifndef __ATTRIBUTE_INFO_3__
-#define __ATTRIBUTE_INFO_3__
-typedef struct _ATTRIBUTE_INFO_3 {
- DWORD dwJobNumberOfPagesPerSide;
- DWORD dwDrvNumberOfPagesPerSide;
- DWORD dwNupBorderFlags;
- DWORD dwJobPageOrderFlags;
- DWORD dwDrvPageOrderFlags;
- DWORD dwJobNumberOfCopies;
- DWORD dwDrvNumberOfCopies;
- DWORD dwColorOptimization;
- short dmPrintQuality;
- short dmYResolution;
-} ATTRIBUTE_INFO_3, *PATTRIBUTE_INFO_3;
-#endif
-#endif /* (NTDDI_VERSION >= NTDDI_WS03) */
-
-#if (NTDDI_VERSION >= NTDDI_VISTA)
-
-#ifndef __ATTRIBUTE_INFO_4__
-#define __ATTRIBUTE_INFO_4__
-
-typedef struct _ATTRIBUTE_INFO_4 {
- DWORD dwJobNumberOfPagesPerSide;
- DWORD dwDrvNumberOfPagesPerSide;
- DWORD dwNupBorderFlags;
- DWORD dwJobPageOrderFlags;
- DWORD dwDrvPageOrderFlags;
- DWORD dwJobNumberOfCopies;
- DWORD dwDrvNumberOfCopies;
- DWORD dwColorOptimization;
- short dmPrintQuality;
- short dmYResolution;
- DWORD dwDuplexFlags;
- DWORD dwNupDirection;
- DWORD dwBookletFlags;
- DWORD dwScalingPercentX;
- DWORD dwScalingPercentY;
-} ATTRIBUTE_INFO_4, *PATTRIBUTE_INFO_4;
-
-#define REVERSE_PAGES_FOR_REVERSE_DUPLEX (0x00000001)
-#define DONT_SEND_EXTRA_PAGES_FOR_DUPLEX (0x00000001 << 1)
-
-#define RIGHT_THEN_DOWN (0x00000001)
-#define DOWN_THEN_RIGHT (0x00000001 << 1)
-#define LEFT_THEN_DOWN (0x00000001 << 2)
-#define DOWN_THEN_LEFT (0x00000001 << 3)
-
-#define BOOKLET_EDGE_LEFT 0x00000000
-#define BOOKLET_EDGE_RIGHT 0x00000001
-
-#endif /* __ATTRIBUTE_INFO_4__ */
-
-#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
-
-typedef struct _PRINTER_NOTIFY_INIT {
- DWORD Size;
- DWORD Reserved;
- DWORD PollTime;
-} PRINTER_NOTIFY_INIT, *LPPRINTER_NOTIFY_INIT, *PPRINTER_NOTIFY_INIT;
-
-typedef struct _SPLCLIENT_INFO_1 {
- DWORD dwSize;
- LPWSTR pMachineName;
- LPWSTR pUserName;
- DWORD dwBuildNum;
- DWORD dwMajorVersion;
- DWORD dwMinorVersion;
- WORD wProcessorArchitecture;
-} SPLCLIENT_INFO_1, *LPSPLCLIENT_INFO_1, *PSPLCLIENT_INFO_1;
-
-typedef struct _SPLCLIENT_INFO_2_V1{
- ULONG_PTR hSplPrinter;
-} SPLCLIENT_INFO_2_W2K;
-
-typedef struct _SPLCLIENT_INFO_2_V2{
-#ifdef _WIN64
- DWORD64 hSplPrinter;
-#else
- DWORD32 hSplPrinter;
-#endif
-} SPLCLIENT_INFO_2_WINXP;
-
-typedef struct _SPLCLIENT_INFO_2_V3{
- UINT64 hSplPrinter;
-} SPLCLIENT_INFO_2_LONGHORN;
-
-#if (OSVER(NTDDI_VERSION) == NTDDI_W2K)
-typedef SPLCLIENT_INFO_2_W2K SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2;
-#elif ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) || (OSVER(NTDDI_VERSION) == NTDDI_WS03))
-typedef SPLCLIENT_INFO_2_WINXP SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2;
-#else
-typedef SPLCLIENT_INFO_2_LONGHORN SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2;
-#endif
-
-#if (NTDDI_VERSION >= NTDDI_VISTA)
-typedef struct _SPLCLIENT_INFO_3 {
- UINT cbSize;
- DWORD dwFlags;
- DWORD dwSize;
- PWSTR pMachineName;
- PWSTR pUserName;
- DWORD dwBuildNum;
- DWORD dwMajorVersion;
- DWORD dwMinorVersion;
- WORD wProcessorArchitecture;
- UINT64 hSplPrinter;
-} SPLCLIENT_INFO_3, *PSPLCLIENT_INFO_3, *LPSPLCLIENT_INFO_3;
-#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
-
-typedef struct _PRINTPROVIDOR {
- BOOL (WINAPI *fpOpenPrinter)(PWSTR lpPrinterName, HANDLE *phPrinter,
- PPRINTER_DEFAULTSW pDefault);
- BOOL (WINAPI *fpSetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level,
- LPBYTE pJob, DWORD Command);
- BOOL (WINAPI *fpGetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level,
- LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded);
- BOOL (WINAPI *fpEnumJobs)(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
- DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
- LPDWORD pcReturned);
- HANDLE (WINAPI *fpAddPrinter)(LPWSTR pName, DWORD Level, LPBYTE pPrinter);
- BOOL (WINAPI *fpDeletePrinter)(HANDLE hPrinter);
- BOOL (WINAPI *fpSetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
- DWORD Command);
- BOOL (WINAPI *fpGetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
- DWORD cbBuf, LPDWORD pcbNeeded);
- BOOL (WINAPI *fpEnumPrinters)(DWORD dwType, LPWSTR lpszName, DWORD dwLevel,
- LPBYTE lpbPrinters, DWORD cbBuf, LPDWORD lpdwNeeded,
- LPDWORD lpdwReturned);
- BOOL (WINAPI *fpAddPrinterDriver)(LPWSTR pName, DWORD Level,
- LPBYTE pDriverInfo);
- BOOL (WINAPI *fpEnumPrinterDrivers)(LPWSTR pName, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf,
- LPDWORD pcbNeeded, LPDWORD pcbReturned);
- BOOL (WINAPI *fpGetPrinterDriver)(HANDLE hPrinter, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf,
- LPDWORD pcbNeeded);
- BOOL (WINAPI *fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pDriverDirectory, DWORD cbBuf,
- LPDWORD pcbNeeded);
- BOOL (WINAPI *fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment,
- LPWSTR pDriverName);
- BOOL (WINAPI *fpAddPrintProcessor)(LPWSTR pName, LPWSTR pEnvironment,
- LPWSTR pPathName, LPWSTR pPrintProcessorName);
- BOOL (WINAPI *fpEnumPrintProcessors)(LPWSTR pName, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf,
- LPDWORD pcbNeeded, LPDWORD pcbReturned);
- BOOL (WINAPI *fpGetPrintProcessorDirectory)(LPWSTR pName, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf,
- LPDWORD pcbNeeded);
- BOOL (WINAPI *fpDeletePrintProcessor)(LPWSTR pName, LPWSTR pEnvironment,
- LPWSTR pPrintProcessorName);
- BOOL (WINAPI *fpEnumPrintProcessorDatatypes)(LPWSTR pName,
- LPWSTR pPrintProcessorName, DWORD Level, LPBYTE pDatatypes,
- DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcbReturned);
- DWORD (WINAPI *fpStartDocPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
- BOOL (WINAPI *fpStartPagePrinter)(HANDLE hPrinter);
- BOOL (WINAPI *fpWritePrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
- LPDWORD pcWritten);
- BOOL (WINAPI *fpEndPagePrinter)(HANDLE hPrinter);
- BOOL (WINAPI *fpAbortPrinter)(HANDLE hPrinter);
- BOOL (WINAPI *fpReadPrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
- LPDWORD pNoBytesRead);
- BOOL (WINAPI *fpEndDocPrinter)(HANDLE hPrinter);
- BOOL (WINAPI *fpAddJob)(HANDLE hPrinter, DWORD Level, LPBYTE pData,
- DWORD cbBuf, LPDWORD pcbNeeded);
- BOOL (WINAPI *fpScheduleJob)(HANDLE hPrinter, DWORD JobID);
- DWORD (WINAPI *fpGetPrinterData)(HANDLE hPrinter, LPWSTR pValueName,
- LPDWORD pType, LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
- DWORD (WINAPI *fpSetPrinterData)(HANDLE hPrinter, LPWSTR pValueName,
- DWORD Type, LPBYTE pData, DWORD cbData);
- DWORD (WINAPI *fpWaitForPrinterChange)(HANDLE hPrinter, DWORD Flags);
- BOOL (WINAPI *fpClosePrinter)(HANDLE phPrinter);
- BOOL (WINAPI *fpAddForm)(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
- BOOL (WINAPI *fpDeleteForm)(HANDLE hPrinter, LPWSTR pFormName);
- BOOL (WINAPI *fpGetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
- LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
- BOOL (WINAPI *fpSetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
- LPBYTE pForm);
- BOOL (WINAPI *fpEnumForms)(HANDLE hPrinter, DWORD Level, LPBYTE pForm,
- DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
- BOOL (WINAPI *fpEnumMonitors)(LPWSTR pName, DWORD Level, LPBYTE pMonitors,
- DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
- BOOL (WINAPI *fpEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
- DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
- BOOL (WINAPI *fpAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
- BOOL (WINAPI *fpConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
- BOOL (WINAPI *fpDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
- HANDLE (WINAPI *fpCreatePrinterIC)(HANDLE hPrinter, LPDEVMODEW pDevMode);
- BOOL (WINAPI *fpPlayGdiScriptOnPrinterIC)(HANDLE hPrinterIC, LPBYTE pIn,
- DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul);
- BOOL (WINAPI *fpDeletePrinterIC)(HANDLE hPrinterIC);
- BOOL (WINAPI *fpAddPrinterConnection)(LPWSTR pName);
- BOOL (WINAPI *fpDeletePrinterConnection)(LPWSTR pName);
- DWORD (WINAPI *fpPrinterMessageBox)(HANDLE hPrinter, DWORD Error, HWND hWnd,
- LPWSTR pText, LPWSTR pCaption, DWORD dwType);
- BOOL (WINAPI *fpAddMonitor)(LPWSTR pName, DWORD Level, LPBYTE pMonitors);
- BOOL (WINAPI *fpDeleteMonitor)(LPWSTR pName, LPWSTR pEnvironment,
- LPWSTR pMonitorName);
- BOOL (WINAPI *fpResetPrinter)(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault);
- BOOL (WINAPI *fpGetPrinterDriverEx)(HANDLE hPrinter, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded,
- DWORD dwClientMajorVersion, DWORD dwClientMinorVersion,
- PDWORD pdwServerMajorVersion, PDWORD pdwServerMinorVersion);
- HANDLE (WINAPI *fpFindFirstPrinterChangeNotification)(HANDLE hPrinter,
- DWORD fdwFlags, DWORD fdwOptions, LPVOID pPrinterNotifyOptions);
- BOOL (WINAPI *fpFindClosePrinterChangeNotification)(HANDLE hChange);
- BOOL (WINAPI *fpAddPortEx)(HANDLE hMonitor, LPWSTR pName, DWORD Level,
- LPBYTE lpBuffer, LPWSTR lpMonitorName);
- BOOL (WINAPI *fpShutDown)(LPVOID pvReserved);
- BOOL (WINAPI *fpRefreshPrinterChangeNotification)(HANDLE hPrinter,
- DWORD Reserved, PVOID pvReserved, PVOID pPrinterNotifyInfo);
- BOOL (WINAPI *fpOpenPrinterEx)(LPWSTR pPrinterName, LPHANDLE phPrinter,
- LPPRINTER_DEFAULTSW pDefault, LPBYTE pClientInfo, DWORD Level);
- HANDLE (WINAPI *fpAddPrinterEx)(LPWSTR pName, DWORD Level, LPBYTE pPrinter,
- LPBYTE pClientInfo, DWORD ClientInfoLevel);
- BOOL (WINAPI *fpSetPort)(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel,
- LPBYTE pPortInfo);
- DWORD (WINAPI *fpEnumPrinterData)( HANDLE hPrinter, DWORD dwIndex,
- LPWSTR pValueName, DWORD cbValueName, LPDWORD pcbValueName,
- LPDWORD pType, LPBYTE pData, DWORD cbData, LPDWORD pcbData);
- DWORD (WINAPI *fpDeletePrinterData)(HANDLE hPrinter, LPWSTR pValueName);
- DWORD (WINAPI *fpClusterSplOpen)(LPCWSTR pszServer, LPCWSTR pszResource,
- PHANDLE phSpooler, LPCWSTR pszName, LPCWSTR pszAddress);
- DWORD (WINAPI *fpClusterSplClose)(HANDLE hSpooler);
- DWORD (WINAPI *fpClusterSplIsAlive)(HANDLE hSpooler);
- DWORD (WINAPI *fpSetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
- LPCWSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData);
- DWORD (WINAPI *fpGetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
- LPCWSTR pValueName, LPDWORD pType, LPBYTE pData, DWORD nSize,
- LPDWORD pcbNeeded);
- DWORD (WINAPI *fpEnumPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
- LPBYTE pEnumValues, DWORD cbEnumValues, LPDWORD pcbEnumValues,
- LPDWORD pnEnumValues);
- DWORD (WINAPI *fpEnumPrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName,
- LPWSTR pSubkey, DWORD cbSubkey, LPDWORD pcbSubkey);
- DWORD (WINAPI *fpDeletePrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
- LPCWSTR pValueName);
- DWORD (WINAPI *fpDeletePrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName);
- BOOL (WINAPI *fpSeekPrinter)(HANDLE hPrinter, LARGE_INTEGER liDistanceToMove,
- PLARGE_INTEGER pliNewPointer, DWORD dwMoveMethod, BOOL bWrite);
- BOOL (WINAPI *fpDeletePrinterDriverEx)(LPWSTR pName, LPWSTR pEnvironment,
- LPWSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionNum);
- BOOL (WINAPI *fpAddPerMachineConnection)(LPCWSTR pServer,
- LPCWSTR pPrinterName, LPCWSTR pPrintServer, LPCWSTR pProvider);
- BOOL (WINAPI *fpDeletePerMachineConnection)(LPCWSTR pServer,
- LPCWSTR pPrinterName);
- BOOL (WINAPI *fpEnumPerMachineConnections)(LPCWSTR pServer,
- LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded,
- LPDWORD pcReturned);
- BOOL (WINAPI *fpXcvData)(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData,
- DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData,
- PDWORD pcbOutputNeeded, PDWORD pdwStatus);
- BOOL (WINAPI *fpAddPrinterDriverEx)(LPWSTR pName, DWORD Level,
- LPBYTE pDriverInfo, DWORD dwFileCopyFlags);
- BOOL (WINAPI *fpSplReadPrinter)(HANDLE hPrinter, LPBYTE *pBuf, DWORD cbBuf);
- BOOL (WINAPI *fpDriverUnloadComplete)(LPWSTR pDriverFile);
- BOOL (WINAPI *fpGetSpoolFileInfo)(HANDLE hPrinter, LPWSTR *pSpoolDir,
- LPHANDLE phFile, HANDLE hSpoolerProcess, HANDLE hAppProcess);
- BOOL (WINAPI *fpCommitSpoolData)(HANDLE hPrinter, DWORD cbCommit);
- BOOL (WINAPI *fpCloseSpoolFileHandle)(HANDLE hPrinter);
- BOOL (WINAPI *fpFlushPrinter)(HANDLE hPrinter, LPBYTE pBuf, DWORD cbBuf,
- LPDWORD pcWritten, DWORD cSleep);
- DWORD (WINAPI *fpSendRecvBidiData)(HANDLE hPort, LPCWSTR pAction,
- LPBIDI_REQUEST_CONTAINER pReqData,
- LPBIDI_RESPONSE_CONTAINER *ppResData);
- BOOL (WINAPI *fpAddDriverCatalog)(HANDLE hPrinter, DWORD dwLevel,
- VOID *pvDriverInfCatInfo, DWORD dwCatalogCopyFlags);
-} PRINTPROVIDOR, *LPPRINTPROVIDOR;
-
-
-
-
-
-/*
- * WARNING: Many Functions are declared as "BOOL", but return ROUTER_*
- */
-
-
-/* TYPES */
-
-typedef struct _MONITOR {
- BOOL (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
- DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
- BOOL (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle);
- BOOL (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName,
- PHANDLE pHandle, struct _MONITOR *pMonitor);
- BOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName,
- DWORD JobId, DWORD Level, LPBYTE pDocInfo);
- BOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
- LPDWORD pcbWritten);
- BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
- LPDWORD pcbRead);
- BOOL (WINAPI *pfnEndDocPort)(HANDLE hPort);
- BOOL (WINAPI *pfnClosePort)(HANDLE hPort);
- BOOL (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
- BOOL (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer,
- LPWSTR lpMonitorName);
- BOOL (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
- BOOL (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
- BOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID,
- LPWSTR pValueName, LPWSTR lpInBuffer, DWORD cbInBuffer,
- LPWSTR lpOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbReturned);
- BOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO,
- DWORD reserved);
- BOOL (WINAPI *pfnXcvOpenPort)(LPCWSTR pszObject, ACCESS_MASK GrantedAccess, PHANDLE phXcv);
- DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName,
- PBYTE pInputData, DWORD cbInputData,
- PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded);
- BOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv);
-} MONITOR, *LPMONITOR;
-
-typedef struct _MONITOR2 {
- DWORD cbSize;
- BOOL (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
- DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
- BOOL (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle);
- BOOL (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName,
- PHANDLE pHandle, struct _MONITOR2 *pMonitor2);
- BOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName,
- DWORD JobId, DWORD Level, LPBYTE pDocInfo);
- BOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
- LPDWORD pcbWritten);
- BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
- LPDWORD pcbRead);
- BOOL (WINAPI *pfnEndDocPort)(HANDLE hPort);
- BOOL (WINAPI *pfnClosePort)(HANDLE hPort);
- BOOL (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
- BOOL (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer,
- LPWSTR lpMonitorName);
- BOOL (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
- BOOL (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
- BOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID,
- LPWSTR pValueName, LPWSTR lpInBuffer, DWORD cbInBuffer,
- LPWSTR lpOutBuffer, DWORD cbOutBuffer, LPDWORD lpcbReturned);
- BOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO,
- DWORD reserved);
- BOOL (WINAPI *pfnXcvOpenPort)(HANDLE hMonitor, LPCWSTR pszObject,
- ACCESS_MASK GrantedAccess, PHANDLE phXcv);
- DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName,
- PBYTE pInputData, DWORD cbInputData,
- PBYTE pOutputData, DWORD cbOutputData, PDWORD pcbOutputNeeded);
- BOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv);
- /* Additions from MONITOR to MONITOR2 */
- VOID (WINAPI *pfnShutdown)(HANDLE hMonitor);
- DWORD (WINAPI *pfnSendRecvBidiDataFromPort)(HANDLE hPort, DWORD dwAccessBit,
- LPCWSTR pAction, PBIDI_REQUEST_CONTAINER pReqData,
- PBIDI_RESPONSE_CONTAINER *ppResData);
-} MONITOR2, *LPMONITOR2, *PMONITOR2;
-
-typedef struct _MONITOREX {
- DWORD dwMonitorSize;
- MONITOR Monitor;
-} MONITOREX, *LPMONITOREX;
-
-typedef struct _MONITORREG {
- DWORD cbSize;
- LONG (WINAPI *fpCreateKey)(HANDLE hcKey, LPCWSTR pszSubKey, DWORD dwOptions,
- REGSAM samDesired, PSECURITY_ATTRIBUTES pSecurityAttributes,
- PHANDLE phckResult, PDWORD pdwDisposition, HANDLE hSpooler);
- LONG (WINAPI *fpOpenKey)(HANDLE hcKey, LPCWSTR pszSubKey, REGSAM samDesired,
- PHANDLE phkResult, HANDLE hSpooler);
- LONG (WINAPI *fpCloseKey)(HANDLE hcKey, HANDLE hSpooler);
- LONG (WINAPI *fpDeleteKey)(HANDLE hcKey, LPCWSTR pszSubKey, HANDLE hSpooler);
- LONG (WINAPI *fpEnumKey)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszName,
- PDWORD pcchName, PFILETIME pftLastWriteTime, HANDLE hSpooler);
- LONG (WINAPI *fpQueryInfoKey)(HANDLE hcKey, PDWORD pcSubKeys, PDWORD pcbKey,
- PDWORD pcValues, PDWORD pcbValue, PDWORD pcbData,
- PDWORD pcbSecurityDescriptor, PFILETIME pftLastWriteTime,
- HANDLE hSpooler);
- LONG (WINAPI *fpSetValue)(HANDLE hcKey, LPCWSTR pszValue, DWORD dwType,
- const BYTE* pData, DWORD cbData, HANDLE hSpooler);
- LONG (WINAPI *fpDeleteValue)(HANDLE hcKey, LPCWSTR pszValue, HANDLE hSpooler);
- LONG (WINAPI *fpEnumValue)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszValue,
- PDWORD pcbValue, PDWORD pType, PBYTE pData, PDWORD pcbData,
- HANDLE hSpooler);
- LONG (WINAPI *fpQueryValue)(HANDLE hcKey, LPCWSTR pszValue, PDWORD pType,
- PBYTE pData, PDWORD pcbData, HANDLE hSpooler);
-} MONITORREG, *PMONITORREG;
-
-typedef struct _MONITORINIT {
- DWORD cbSize;
- HANDLE hSpooler;
- HANDLE hckRegistryRoot;
- PMONITORREG pMonitorReg;
- BOOL bLocal;
-} MONITORINIT, *PMONITORINIT;
-
-typedef struct _MONITORUI {
- DWORD dwMonitorUISize;
- BOOL (WINAPI *pfnAddPortUI)(PCWSTR pszServer, HWND hWnd,
- PCWSTR pszPortNameIn, PWSTR *ppszPortNameOut);
- BOOL (WINAPI *pfnConfigurePortUI)(PCWSTR pName, HWND hWnd, PCWSTR pPortName);
- BOOL (WINAPI *pfnDeletePortUI)(PCWSTR pszServer, HWND hWnd, PCWSTR pszPortName);
-}MONITORUI, *PMONITORUI;
-
-typedef struct _PRINTPROCESSOROPENDATA {
- PDEVMODEW pDevMode;
- LPWSTR pDatatype;
- LPWSTR pParameters;
- LPWSTR pDocumentName;
- DWORD JobId;
- LPWSTR pOutputFile;
- LPWSTR pPrinterName;
-} PRINTPROCESSOROPENDATA, *LPPRINTPROCESSOROPENDATA, *PPRINTPROCESSOROPENDATA;
-
-
-/*
- * WARNING: Many Functions are declared as "BOOL", but return ROUTER_*
- */
-
-typedef struct _PRINTPROVIDOR {
- BOOL (WINAPI *fpOpenPrinter)(LPWSTR lpPrinterName, HANDLE *phPrinter,
- LPPRINTER_DEFAULTSW pDefault);
- BOOL (WINAPI *fpSetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level,
- LPBYTE pJob, DWORD Command);
- BOOL (WINAPI *fpGetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level,
- LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded);
- BOOL (WINAPI *fpEnumJobs)(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
- DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
- LPDWORD pcReturned);
- HANDLE (WINAPI *fpAddPrinter)(LPWSTR pName, DWORD Level, LPBYTE pPrinter);
- BOOL (WINAPI *fpDeletePrinter)(HANDLE hPrinter);
- BOOL (WINAPI *fpSetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
- DWORD Command);
- BOOL (WINAPI *fpGetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
- DWORD cbBuf, LPDWORD pcbNeeded);
- BOOL (WINAPI *fpEnumPrinters)(DWORD dwType, LPWSTR lpszName, DWORD dwLevel,
- LPBYTE lpbPrinters, DWORD cbBuf, LPDWORD lpdwNeeded,
- LPDWORD lpdwReturned);
- BOOL (WINAPI *fpAddPrinterDriver)(LPWSTR pName, DWORD Level,
- LPBYTE pDriverInfo);
- BOOL (WINAPI *fpEnumPrinterDrivers)(LPWSTR pName, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf,
- LPDWORD pcbNeeded, LPDWORD pcbReturned);
- BOOL (WINAPI *fpGetPrinterDriver)(HANDLE hPrinter, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf,
- LPDWORD pcbNeeded);
- BOOL (WINAPI *fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pDriverDirectory, DWORD cbBuf,
- LPDWORD pcbNeeded);
- BOOL (WINAPI *fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment,
- LPWSTR pDriverName);
- BOOL (WINAPI *fpAddPrintProcessor)(LPWSTR pName, LPWSTR pEnvironment,
- LPWSTR pPathName, LPWSTR pPrintProcessorName);
- BOOL (WINAPI *fpEnumPrintProcessors)(LPWSTR pName, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf,
- LPDWORD pcbNeeded, LPDWORD pcbReturned);
- BOOL (WINAPI *fpGetPrintProcessorDirectory)(LPWSTR pName, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pPrintProcessorInfo, DWORD cbBuf,
- LPDWORD pcbNeeded);
- BOOL (WINAPI *fpDeletePrintProcessor)(LPWSTR pName, LPWSTR pEnvironment,
- LPWSTR pPrintProcessorName);
- BOOL (WINAPI *fpEnumPrintProcessorDatatypes)(LPWSTR pName,
- LPWSTR pPrintProcessorName, DWORD Level, LPBYTE pDatatypes,
- DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcbReturned);
- DWORD (WINAPI *fpStartDocPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
- BOOL (WINAPI *fpStartPagePrinter)(HANDLE hPrinter);
- BOOL (WINAPI *fpWritePrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
- LPDWORD pcWritten);
- BOOL (WINAPI *fpEndPagePrinter)(HANDLE hPrinter);
- BOOL (WINAPI *fpAbortPrinter)(HANDLE hPrinter);
- BOOL (WINAPI *fpReadPrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
- LPDWORD pNoBytesRead);
- BOOL (WINAPI *fpEndDocPrinter)(HANDLE hPrinter);
- BOOL (WINAPI *fpAddJob)(HANDLE hPrinter, DWORD Level, LPBYTE pData,
- DWORD cbBuf, LPDWORD pcbNeeded);
- BOOL (WINAPI *fpScheduleJob)(HANDLE hPrinter, DWORD JobID);
- DWORD (WINAPI *fpGetPrinterData)(HANDLE hPrinter, LPWSTR pValueName,
- LPDWORD pType, LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
- DWORD (WINAPI *fpSetPrinterData)(HANDLE hPrinter, LPWSTR pValueName,
- DWORD Type, LPBYTE pData, DWORD cbData);
- DWORD (WINAPI *fpWaitForPrinterChange)(HANDLE hPrinter, DWORD Flags);
- BOOL (WINAPI *fpClosePrinter)(HANDLE phPrinter);
- BOOL (WINAPI *fpAddForm)(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
- BOOL (WINAPI *fpDeleteForm)(HANDLE hPrinter, LPWSTR pFormName);
- BOOL (WINAPI *fpGetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
- LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
- BOOL (WINAPI *fpSetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
- LPBYTE pForm);
- BOOL (WINAPI *fpEnumForms)(HANDLE hPrinter, DWORD Level, LPBYTE pForm,
- DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
- BOOL (WINAPI *fpEnumMonitors)(LPWSTR pName, DWORD Level, LPBYTE pMonitors,
- DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
- BOOL (WINAPI *fpEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
- DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
- BOOL (WINAPI *fpAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
- BOOL (WINAPI *fpConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
- BOOL (WINAPI *fpDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
- HANDLE (WINAPI *fpCreatePrinterIC)(HANDLE hPrinter, LPDEVMODEW pDevMode);
- BOOL (WINAPI *fpPlayGdiScriptOnPrinterIC)(HANDLE hPrinterIC, LPBYTE pIn,
- DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul);
- BOOL (WINAPI *fpDeletePrinterIC)(HANDLE hPrinterIC);
- BOOL (WINAPI *fpAddPrinterConnection)(LPWSTR pName);
- BOOL (WINAPI *fpDeletePrinterConnection)(LPWSTR pName);
- DWORD (WINAPI *fpPrinterMessageBox)(HANDLE hPrinter, DWORD Error, HWND hWnd,
- LPWSTR pText, LPWSTR pCaption, DWORD dwType);
- BOOL (WINAPI *fpAddMonitor)(LPWSTR pName, DWORD Level, LPBYTE pMonitors);
- BOOL (WINAPI *fpDeleteMonitor)(LPWSTR pName, LPWSTR pEnvironment,
- LPWSTR pMonitorName);
- BOOL (WINAPI *fpResetPrinter)(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault);
- BOOL (WINAPI *fpGetPrinterDriverEx)(HANDLE hPrinter, LPWSTR pEnvironment,
- DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, LPDWORD pcbNeeded,
- DWORD dwClientMajorVersion, DWORD dwClientMinorVersion,
- PDWORD pdwServerMajorVersion, PDWORD pdwServerMinorVersion);
- HANDLE (WINAPI *fpFindFirstPrinterChangeNotification)(HANDLE hPrinter,
- DWORD fdwFlags, DWORD fdwOptions, LPVOID pPrinterNotifyOptions);
- BOOL (WINAPI *fpFindClosePrinterChangeNotification)(HANDLE hChange);
- BOOL (WINAPI *fpAddPortEx)(HANDLE hMonitor, LPWSTR pName, DWORD Level,
- LPBYTE lpBuffer, LPWSTR lpMonitorName);
- BOOL (WINAPI *fpShutDown)(LPVOID pvReserved);
- BOOL (WINAPI *fpRefreshPrinterChangeNotification)(HANDLE hPrinter,
- DWORD Reserved, PVOID pvReserved, PVOID pPrinterNotifyInfo);
- BOOL (WINAPI *fpOpenPrinterEx)(LPWSTR pPrinterName, LPHANDLE phPrinter,
- LPPRINTER_DEFAULTSW pDefault, LPBYTE pClientInfo, DWORD Level);
- HANDLE (WINAPI *fpAddPrinterEx)(LPWSTR pName, DWORD Level, LPBYTE pPrinter,
- LPBYTE pClientInfo, DWORD ClientInfoLevel);
- BOOL (WINAPI *fpSetPort)(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel,
- LPBYTE pPortInfo);
- DWORD (WINAPI *fpEnumPrinterData)( HANDLE hPrinter, DWORD dwIndex,
- LPWSTR pValueName, DWORD cbValueName, LPDWORD pcbValueName,
- LPDWORD pType, LPBYTE pData, DWORD cbData, LPDWORD pcbData);
- DWORD (WINAPI *fpDeletePrinterData)(HANDLE hPrinter, LPWSTR pValueName);
- DWORD (WINAPI *fpClusterSplOpen)(LPCWSTR pszServer, LPCWSTR pszResource,
- PHANDLE phSpooler, LPCWSTR pszName, LPCWSTR pszAddress);
- DWORD (WINAPI *fpClusterSplClose)(HANDLE hSpooler);
- DWORD (WINAPI *fpClusterSplIsAlive)(HANDLE hSpooler);
- DWORD (WINAPI *fpSetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
- LPCWSTR pValueName, DWORD Type, LPBYTE pData, DWORD cbData);
- DWORD (WINAPI *fpGetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
- LPCWSTR pValueName, LPDWORD pType, LPBYTE pData, DWORD nSize,
- LPDWORD pcbNeeded);
- DWORD (WINAPI *fpEnumPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
- LPBYTE pEnumValues, DWORD cbEnumValues, LPDWORD pcbEnumValues,
- LPDWORD pnEnumValues);
- DWORD (WINAPI *fpEnumPrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName,
- LPWSTR pSubkey, DWORD cbSubkey, LPDWORD pcbSubkey);
- DWORD (WINAPI *fpDeletePrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
- LPCWSTR pValueName);
- DWORD (WINAPI *fpDeletePrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName);
- BOOL (WINAPI *fpSeekPrinter)(HANDLE hPrinter, LARGE_INTEGER liDistanceToMove,
- PLARGE_INTEGER pliNewPointer, DWORD dwMoveMethod, BOOL bWrite);
- BOOL (WINAPI *fpDeletePrinterDriverEx)(LPWSTR pName, LPWSTR pEnvironment,
- LPWSTR pDriverName, DWORD dwDeleteFlag, DWORD dwVersionNum);
- BOOL (WINAPI *fpAddPerMachineConnection)(LPCWSTR pServer,
- LPCWSTR pPrinterName, LPCWSTR pPrintServer, LPCWSTR pProvider);
- BOOL (WINAPI *fpDeletePerMachineConnection)(LPCWSTR pServer,
- LPCWSTR pPrinterName);
- BOOL (WINAPI *fpEnumPerMachineConnections)(LPCWSTR pServer,
- LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded,
- LPDWORD pcReturned);
- BOOL (WINAPI *fpXcvData)(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData,
- DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData,
- PDWORD pcbOutputNeeded, PDWORD pdwStatus);
- BOOL (WINAPI *fpAddPrinterDriverEx)(LPWSTR pName, DWORD Level,
- LPBYTE pDriverInfo, DWORD dwFileCopyFlags);
- BOOL (WINAPI *fpSplReadPrinter)(HANDLE hPrinter, LPBYTE *pBuf, DWORD cbBuf);
- BOOL (WINAPI *fpDriverUnloadComplete)(LPWSTR pDriverFile);
- BOOL (WINAPI *fpGetSpoolFileInfo)(HANDLE hPrinter, LPWSTR *pSpoolDir,
- LPHANDLE phFile, HANDLE hSpoolerProcess, HANDLE hAppProcess);
- BOOL (WINAPI *fpCommitSpoolData)(HANDLE hPrinter, DWORD cbCommit);
- BOOL (WINAPI *fpCloseSpoolFileHandle)(HANDLE hPrinter);
- BOOL (WINAPI *fpFlushPrinter)(HANDLE hPrinter, LPBYTE pBuf, DWORD cbBuf,
- LPDWORD pcWritten, DWORD cSleep);
- DWORD (WINAPI *fpSendRecvBidiData)(HANDLE hPort, LPCWSTR pAction,
- LPBIDI_REQUEST_CONTAINER pReqData,
- LPBIDI_RESPONSE_CONTAINER *ppResData);
- BOOL (WINAPI *fpAddDriverCatalog)(HANDLE hPrinter, DWORD dwLevel,
- VOID *pvDriverInfCatInfo, DWORD dwCatalogCopyFlags);
-} PRINTPROVIDOR, *LPPRINTPROVIDOR;
-
-/* DECLARATIONS */
-
-HANDLE WINAPI CreatePrinterIC(HANDLE hPrinter, LPDEVMODEW pDevMode);
-BOOL WINAPI PlayGdiScriptOnPrinterIC(HANDLE hPrinterIC, LPBYTE pIn,
- DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul);
-BOOL WINAPI DeletePrinterIC(HANDLE hPrinterIC);
-BOOL WINAPI DevQueryPrint(HANDLE hPrinter, LPDEVMODEW pDevMode, DWORD *pResID);
-
-/* Security and Access */
-HANDLE WINAPI RevertToPrinterSelf(VOID);
-BOOL WINAPI ImpersonatePrinterClient(HANDLE hToken);
-BOOL WINAPI OpenPrinterToken(PHANDLE phToken);
-BOOL WINAPI SetPrinterToken(HANDLE hToken);
-BOOL WINAPI ClosePrinterToken(HANDLE hToken);
-
-/* Notification */
-BOOL WINAPI ReplyPrinterChangeNotification(HANDLE hNotify, DWORD fdwFlags,
- PDWORD pdwResult, PVOID pPrinterNotifyInfo);
-BOOL WINAPI PartialReplyPrinterChangeNotification(HANDLE hNotify,
- PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc);
-PPRINTER_NOTIFY_INFO RouterAllocPrinterNotifyInfo(DWORD cPrinterNotifyInfoData);
-BOOL WINAPI RouterFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo);
-BOOL WINAPI AppendPrinterNotifyInfoData(PPRINTER_NOTIFY_INFO pInfoDest,
- PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc, DWORD fdwFlags);
-DWORD WINAPI CallRouterFindFirstPrinterChangeNotification(HANDLE hPrinter,
- DWORD fdwFlags, DWORD fdwOptions, HANDLE hNotify, PVOID pvReserved);
-
-/* Port monitor / Language monitor / Print monitor */
-LPMONITOR2 WINAPI InitializePrintMonitor2(PMONITORINIT pMonitorInit,
- PHANDLE phMonitor);
-PMONITORUI WINAPI InitializePrintMonitorUI(VOID);
-LPMONITOREX WINAPI InitializePrintMonitor(LPWSTR pRegistryRoot);
-BOOL WINAPI InitializeMonitorEx(LPWSTR pRegistryRoot, LPMONITOR pMonitor);
-BOOL WINAPI InitializeMonitor(LPWSTR pRegistryRoot);
-
-BOOL WINAPI OpenPort(LPWSTR pName, PHANDLE pHandle);
-BOOL WINAPI WritePort(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
- LPDWORD pcbWritten);
-BOOL WINAPI ReadPort(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
- LPDWORD pcbRead);
-BOOL WINAPI ClosePort(HANDLE hPort);
-
-/* Print processor */
-HANDLE WINAPI OpenPrintProcessor(LPWSTR pPrinterName,
- PPRINTPROCESSOROPENDATA pPrintProcessorOpenData);
-BOOL WINAPI PrintDocumentOnPrintProcessor(HANDLE hPrintProcessor,
- LPWSTR pDocumentName);
-BOOL WINAPI ClosePrintProcessor(HANDLE hPrintProcessor);
-BOOL WINAPI ControlPrintProcessor(HANDLE hPrintProcessor, DWORD Command);
-BOOL WINAPI InstallPrintProcessor(HWND hWnd);
-
-/* Print provider */
-BOOL WINAPI InitializePrintProvidor(LPPRINTPROVIDOR pPrintProvidor,
- DWORD cbPrintProvidor, LPWSTR pFullRegistryPath);
-BOOL WINAPI ProvidorFindFirstPrinterChangeNotification(HANDLE hPrinter,
- DWORD fdwFlags, DWORD fdwOptions, HANDLE hNotify,
- PVOID pvReserved0, PVOID pvReserved1);
-BOOL WINAPI ProvidorFindClosePrinterChangeNotification(HANDLE hPrinter);
-
-/* Spooler */
-BOOL WINAPI SpoolerFindFirstPrinterChangeNotification(HANDLE hPrinter,
- DWORD fdwFlags, DWORD fdwOptions, PHANDLE phEvent,
- PVOID pPrinterNotifyOptions, PVOID pvReserved);
-BOOL WINAPI SpoolerFindNextPrinterChangeNotification(HANDLE hPrinter,
- LPDWORD pfdwChange, PVOID pvReserved0, PVOID ppPrinterNotifyInfo);
-VOID WINAPI SpoolerFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo);
-BOOL WINAPI SpoolerFindClosePrinterChangeNotification(HANDLE hPrinter);
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
/* TYPES */
+typedef struct _OPTPARAM {
+ WORD cbSize;
+ BYTE Flags;
+ BYTE Style;
+ LPTSTR pData;
+ ULONG_PTR IconID;
+ LPARAM lParam;
+ ULONG_PTR dwReserved[2];
+} OPTPARAM, *POPTPARAM;
+
#if (NTDDI_VERSION >= NTDDI_VISTA)
typedef struct _OPTCOMBO {
WORD cbSize;
} OPTCOMBO, *POPTCOMBO;
#endif
-typedef struct _OPTPARAM {
- WORD cbSize;
- BYTE Flags;
- BYTE Style;
- LPTSTR pData;
- ULONG_PTR IconID;
- LPARAM lParam;
- ULONG_PTR dwReserved[2];
-} OPTPARAM, *POPTPARAM;
-
typedef struct _OPTTYPE {
WORD cbSize;
BYTE Type;
--- /dev/null
+#pragma once
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (STRICT && (NTDDI_VERSION >= NTDDI_VISTA))
+#define HKEYMONITOR HKEY
+#else
+#define HKEYMONITOR HANDLE
+#endif
+
+#define PRINTER_NOTIFY_STATUS_ENDPOINT 1
+#define PRINTER_NOTIFY_STATUS_POLL 2
+#define PRINTER_NOTIFY_STATUS_INFO 4
+
+#define ROUTER_UNKNOWN 0
+#define ROUTER_SUCCESS 1
+#define ROUTER_STOP_ROUTING 2
+
+#if (NTDDI_VERSION >= NTDDI_WINXP)
+#define MONITOR2_SIZE_WIN2K (sizeof(DWORD) + (sizeof(PVOID)*18))
+#endif
+
+#define COPYFILE_EVENT_SET_PRINTER_DATAEX 1
+#define COPYFILE_EVENT_DELETE_PRINTER 2
+#define COPYFILE_EVENT_ADD_PRINTER_CONNECTION 3
+#define COPYFILE_EVENT_DELETE_PRINTER_CONNECTION 4
+#define COPYFILE_EVENT_FILES_CHANGED 5
+
+#define COPYFILE_FLAG_CLIENT_SPOOLER 0x00000001
+#define COPYFILE_FLAG_SERVER_SPOOLER 0x00000002
+
+#define PRINTER_NOTIFY_INFO_DATA_COMPACT 1
+
+typedef struct _PRINTER_NOTIFY_INIT {
+ DWORD Size;
+ DWORD Reserved;
+ DWORD PollTime;
+} PRINTER_NOTIFY_INIT, *LPPRINTER_NOTIFY_INIT, *PPRINTER_NOTIFY_INIT;
+
+typedef struct _SPLCLIENT_INFO_1 {
+ DWORD dwSize;
+ LPWSTR pMachineName;
+ LPWSTR pUserName;
+ DWORD dwBuildNum;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ WORD wProcessorArchitecture;
+} SPLCLIENT_INFO_1, *LPSPLCLIENT_INFO_1, *PSPLCLIENT_INFO_1;
+
+typedef struct _SPLCLIENT_INFO_2_V1{
+ ULONG_PTR hSplPrinter;
+} SPLCLIENT_INFO_2_W2K;
+
+typedef struct _SPLCLIENT_INFO_2_V2{
+#ifdef _WIN64
+ DWORD64 hSplPrinter;
+#else
+ DWORD32 hSplPrinter;
+#endif
+} SPLCLIENT_INFO_2_WINXP;
+
+typedef struct _SPLCLIENT_INFO_2_V3{
+ UINT64 hSplPrinter;
+} SPLCLIENT_INFO_2_LONGHORN;
+
+typedef struct _PRINTPROVIDOR {
+ BOOL (WINAPI *fpOpenPrinter)(PWSTR lpPrinterName, HANDLE *phPrinter,
+ PPRINTER_DEFAULTSW pDefault);
+ BOOL (WINAPI *fpSetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level,
+ LPBYTE pJob, DWORD Command);
+ BOOL (WINAPI *fpGetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level,
+ LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded);
+ BOOL (WINAPI *fpEnumJobs)(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs,
+ DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+ HANDLE (WINAPI *fpAddPrinter)(LPWSTR pName, DWORD Level, LPBYTE pPrinter);
+ BOOL (WINAPI *fpDeletePrinter)(HANDLE hPrinter);
+ BOOL (WINAPI *fpSetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
+ DWORD Command);
+ BOOL (WINAPI *fpGetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter,
+ DWORD cbBuf, LPDWORD pcbNeeded);
+ BOOL (WINAPI *fpEnumPrinters)(DWORD dwType, LPWSTR lpszName, DWORD dwLevel,
+ LPBYTE lpbPrinters, DWORD cbBuf, LPDWORD lpdwNeeded,
+ LPDWORD lpdwReturned);
+ BOOL (WINAPI *fpAddPrinterDriver)(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo);
+ BOOL (WINAPI *fpEnumPrinterDrivers)(LPWSTR pName, LPWSTR pEnvironment,
+ DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf,
+ LPDWORD pcbNeeded, LPDWORD pcbReturned);
+ BOOL (WINAPI *fpGetPrinterDriver)(HANDLE hPrinter, LPWSTR pEnvironment,
+ DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf,
+ LPDWORD pcbNeeded);
+ BOOL (WINAPI *fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment,
+ DWORD Level, LPBYTE pDriverDirectory,
+ DWORD cbBuf, LPDWORD pcbNeeded);
+ BOOL (WINAPI *fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment,
+ LPWSTR pDriverName);
+ BOOL (WINAPI *fpAddPrintProcessor)(LPWSTR pName, LPWSTR pEnvironment,
+ LPWSTR pPathName, LPWSTR pPrintProcessorName);
+ BOOL (WINAPI *fpEnumPrintProcessors)(LPWSTR pName, LPWSTR pEnvironment,
+ DWORD Level, LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf, LPDWORD pcbNeeded,
+ LPDWORD pcbReturned);
+ BOOL (WINAPI *fpGetPrintProcessorDirectory)(LPWSTR pName, LPWSTR pEnvironment,
+ DWORD Level, LPBYTE pPrintProcessorInfo,
+ DWORD cbBuf, LPDWORD pcbNeeded);
+ BOOL (WINAPI *fpDeletePrintProcessor)(LPWSTR pName, LPWSTR pEnvironment,
+ LPWSTR pPrintProcessorName);
+ BOOL (WINAPI *fpEnumPrintProcessorDatatypes)(LPWSTR pName,
+ LPWSTR pPrintProcessorName,
+ DWORD Level, LPBYTE pDatatypes,
+ DWORD cbBuf, LPDWORD pcbNeeded,
+ LPDWORD pcbReturned);
+ DWORD (WINAPI *fpStartDocPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo);
+ BOOL (WINAPI *fpStartPagePrinter)(HANDLE hPrinter);
+ BOOL (WINAPI *fpWritePrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
+ LPDWORD pcWritten);
+ BOOL (WINAPI *fpEndPagePrinter)(HANDLE hPrinter);
+ BOOL (WINAPI *fpAbortPrinter)(HANDLE hPrinter);
+ BOOL (WINAPI *fpReadPrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf,
+ LPDWORD pNoBytesRead);
+ BOOL (WINAPI *fpEndDocPrinter)(HANDLE hPrinter);
+ BOOL (WINAPI *fpAddJob)(HANDLE hPrinter, DWORD Level, LPBYTE pData,
+ DWORD cbBuf, LPDWORD pcbNeeded);
+ BOOL (WINAPI *fpScheduleJob)(HANDLE hPrinter, DWORD JobID);
+ DWORD (WINAPI *fpGetPrinterData)(HANDLE hPrinter, LPWSTR pValueName,
+ LPDWORD pType, LPBYTE pData, DWORD nSize,
+ LPDWORD pcbNeeded);
+ DWORD (WINAPI *fpSetPrinterData)(HANDLE hPrinter, LPWSTR pValueName,
+ DWORD Type, LPBYTE pData, DWORD cbData);
+ DWORD (WINAPI *fpWaitForPrinterChange)(HANDLE hPrinter, DWORD Flags);
+ BOOL (WINAPI *fpClosePrinter)(HANDLE phPrinter);
+ BOOL (WINAPI *fpAddForm)(HANDLE hPrinter, DWORD Level, LPBYTE pForm);
+ BOOL (WINAPI *fpDeleteForm)(HANDLE hPrinter, LPWSTR pFormName);
+ BOOL (WINAPI *fpGetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
+ LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded);
+ BOOL (WINAPI *fpSetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
+ LPBYTE pForm);
+ BOOL (WINAPI *fpEnumForms)(HANDLE hPrinter, DWORD Level, LPBYTE pForm,
+ DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+ BOOL (WINAPI *fpEnumMonitors)(LPWSTR pName, DWORD Level, LPBYTE pMonitors,
+ DWORD cbBuf, LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+ BOOL (WINAPI *fpEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
+ DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+ BOOL (WINAPI *fpAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
+ BOOL (WINAPI *fpConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ BOOL (WINAPI *fpDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ HANDLE (WINAPI *fpCreatePrinterIC)(HANDLE hPrinter, LPDEVMODEW pDevMode);
+ BOOL (WINAPI *fpPlayGdiScriptOnPrinterIC)(HANDLE hPrinterIC, LPBYTE pIn,
+ DWORD cIn, LPBYTE pOut, DWORD cOut,
+ DWORD ul);
+ BOOL (WINAPI *fpDeletePrinterIC)(HANDLE hPrinterIC);
+ BOOL (WINAPI *fpAddPrinterConnection)(LPWSTR pName);
+ BOOL (WINAPI *fpDeletePrinterConnection)(LPWSTR pName);
+ DWORD (WINAPI *fpPrinterMessageBox)(HANDLE hPrinter, DWORD Error, HWND hWnd,
+ LPWSTR pText, LPWSTR pCaption,
+ DWORD dwType);
+ BOOL (WINAPI *fpAddMonitor)(LPWSTR pName, DWORD Level, LPBYTE pMonitors);
+ BOOL (WINAPI *fpDeleteMonitor)(LPWSTR pName, LPWSTR pEnvironment,
+ LPWSTR pMonitorName);
+ BOOL (WINAPI *fpResetPrinter)(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault);
+ BOOL (WINAPI *fpGetPrinterDriverEx)(HANDLE hPrinter, LPWSTR pEnvironment,
+ DWORD Level, LPBYTE pDriverInfo,
+ DWORD cbBuf, LPDWORD pcbNeeded,
+ DWORD dwClientMajorVersion,
+ DWORD dwClientMinorVersion,
+ PDWORD pdwServerMajorVersion,
+ PDWORD pdwServerMinorVersion);
+ HANDLE (WINAPI *fpFindFirstPrinterChangeNotification)(HANDLE hPrinter,
+ DWORD fdwFlags,
+ DWORD fdwOptions,
+ LPVOID pPrinterNotifyOptions);
+ BOOL (WINAPI *fpFindClosePrinterChangeNotification)(HANDLE hChange);
+ BOOL (WINAPI *fpAddPortEx)(HANDLE hMonitor, LPWSTR pName, DWORD Level,
+ LPBYTE lpBuffer, LPWSTR lpMonitorName);
+ BOOL (WINAPI *fpShutDown)(LPVOID pvReserved);
+ BOOL (WINAPI *fpRefreshPrinterChangeNotification)(HANDLE hPrinter,
+ DWORD Reserved,
+ PVOID pvReserved,
+ PVOID pPrinterNotifyInfo);
+ BOOL (WINAPI *fpOpenPrinterEx)(LPWSTR pPrinterName, LPHANDLE phPrinter,
+ LPPRINTER_DEFAULTSW pDefault, LPBYTE pClientInfo,
+ DWORD Level);
+ HANDLE (WINAPI *fpAddPrinterEx)(LPWSTR pName, DWORD Level, LPBYTE pPrinter,
+ LPBYTE pClientInfo, DWORD ClientInfoLevel);
+ BOOL (WINAPI *fpSetPort)(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel,
+ LPBYTE pPortInfo);
+ DWORD (WINAPI *fpEnumPrinterData)(HANDLE hPrinter, DWORD dwIndex,
+ LPWSTR pValueName, DWORD cbValueName,
+ LPDWORD pcbValueName, LPDWORD pType,
+ LPBYTE pData, DWORD cbData, LPDWORD pcbData);
+ DWORD (WINAPI *fpDeletePrinterData)(HANDLE hPrinter, LPWSTR pValueName);
+ DWORD (WINAPI *fpClusterSplOpen)(LPCWSTR pszServer, LPCWSTR pszResource,
+ PHANDLE phSpooler, LPCWSTR pszName,
+ LPCWSTR pszAddress);
+ DWORD (WINAPI *fpClusterSplClose)(HANDLE hSpooler);
+ DWORD (WINAPI *fpClusterSplIsAlive)(HANDLE hSpooler);
+ DWORD (WINAPI *fpSetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
+ LPCWSTR pValueName, DWORD Type,
+ LPBYTE pData, DWORD cbData);
+ DWORD (WINAPI *fpGetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
+ LPCWSTR pValueName, LPDWORD pType,
+ LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded);
+ DWORD (WINAPI *fpEnumPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
+ LPBYTE pEnumValues, DWORD cbEnumValues,
+ LPDWORD pcbEnumValues, LPDWORD pnEnumValues);
+ DWORD (WINAPI *fpEnumPrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName,
+ LPWSTR pSubkey, DWORD cbSubkey, LPDWORD pcbSubkey);
+ DWORD (WINAPI *fpDeletePrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName,
+ LPCWSTR pValueName);
+ DWORD (WINAPI *fpDeletePrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName);
+ BOOL (WINAPI *fpSeekPrinter)(HANDLE hPrinter, LARGE_INTEGER liDistanceToMove,
+ PLARGE_INTEGER pliNewPointer, DWORD dwMoveMethod,
+ BOOL bWrite);
+ BOOL (WINAPI *fpDeletePrinterDriverEx)(LPWSTR pName, LPWSTR pEnvironment,
+ LPWSTR pDriverName, DWORD dwDeleteFlag,
+ DWORD dwVersionNum);
+ BOOL (WINAPI *fpAddPerMachineConnection)(LPCWSTR pServer,
+ LPCWSTR pPrinterName, LPCWSTR pPrintServer,
+ LPCWSTR pProvider);
+ BOOL (WINAPI *fpDeletePerMachineConnection)(LPCWSTR pServer,
+ LPCWSTR pPrinterName);
+ BOOL (WINAPI *fpEnumPerMachineConnections)(LPCWSTR pServer,
+ LPBYTE pPrinterEnum, DWORD cbBuf,
+ LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+ BOOL (WINAPI *fpXcvData)(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData,
+ DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData,
+ PDWORD pcbOutputNeeded, PDWORD pdwStatus);
+ BOOL (WINAPI *fpAddPrinterDriverEx)(LPWSTR pName, DWORD Level,
+ LPBYTE pDriverInfo, DWORD dwFileCopyFlags);
+ BOOL (WINAPI *fpSplReadPrinter)(HANDLE hPrinter, LPBYTE *pBuf, DWORD cbBuf);
+ BOOL (WINAPI *fpDriverUnloadComplete)(LPWSTR pDriverFile);
+ BOOL (WINAPI *fpGetSpoolFileInfo)(HANDLE hPrinter, LPWSTR *pSpoolDir,
+ LPHANDLE phFile, HANDLE hSpoolerProcess,
+ HANDLE hAppProcess);
+ BOOL (WINAPI *fpCommitSpoolData)(HANDLE hPrinter, DWORD cbCommit);
+ BOOL (WINAPI *fpCloseSpoolFileHandle)(HANDLE hPrinter);
+ BOOL (WINAPI *fpFlushPrinter)(HANDLE hPrinter, LPBYTE pBuf, DWORD cbBuf,
+ LPDWORD pcWritten, DWORD cSleep);
+ DWORD (WINAPI *fpSendRecvBidiData)(HANDLE hPort, LPCWSTR pAction,
+ LPBIDI_REQUEST_CONTAINER pReqData,
+ LPBIDI_RESPONSE_CONTAINER *ppResData);
+ BOOL (WINAPI *fpAddDriverCatalog)(HANDLE hPrinter, DWORD dwLevel,
+ VOID *pvDriverInfCatInfo, DWORD dwCatalogCopyFlags);
+} PRINTPROVIDOR, *LPPRINTPROVIDOR;
+
+typedef struct _PRINTPROCESSOROPENDATA {
+ PDEVMODEW pDevMode;
+ LPWSTR pDatatype;
+ LPWSTR pParameters;
+ LPWSTR pDocumentName;
+ DWORD JobId;
+ LPWSTR pOutputFile;
+ LPWSTR pPrinterName;
+} PRINTPROCESSOROPENDATA, *LPPRINTPROCESSOROPENDATA, *PPRINTPROCESSOROPENDATA;
+
+typedef struct _MONITORREG {
+ DWORD cbSize;
+ LONG (WINAPI *fpCreateKey)(HANDLE hcKey, LPCWSTR pszSubKey, DWORD dwOptions,
+ REGSAM samDesired,
+ PSECURITY_ATTRIBUTES pSecurityAttributes,
+ PHANDLE phckResult, PDWORD pdwDisposition,
+ HANDLE hSpooler);
+ LONG (WINAPI *fpOpenKey)(HANDLE hcKey, LPCWSTR pszSubKey, REGSAM samDesired,
+ PHANDLE phkResult, HANDLE hSpooler);
+ LONG (WINAPI *fpCloseKey)(HANDLE hcKey, HANDLE hSpooler);
+ LONG (WINAPI *fpDeleteKey)(HANDLE hcKey, LPCWSTR pszSubKey, HANDLE hSpooler);
+ LONG (WINAPI *fpEnumKey)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszName,
+ PDWORD pcchName, PFILETIME pftLastWriteTime,
+ HANDLE hSpooler);
+ LONG (WINAPI *fpQueryInfoKey)(HANDLE hcKey, PDWORD pcSubKeys, PDWORD pcbKey,
+ PDWORD pcValues, PDWORD pcbValue, PDWORD pcbData,
+ PDWORD pcbSecurityDescriptor,
+ PFILETIME pftLastWriteTime,
+ HANDLE hSpooler);
+ LONG (WINAPI *fpSetValue)(HANDLE hcKey, LPCWSTR pszValue, DWORD dwType,
+ const BYTE* pData, DWORD cbData, HANDLE hSpooler);
+ LONG (WINAPI *fpDeleteValue)(HANDLE hcKey, LPCWSTR pszValue, HANDLE hSpooler);
+ LONG (WINAPI *fpEnumValue)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszValue,
+ PDWORD pcbValue, PDWORD pType, PBYTE pData, PDWORD pcbData,
+ HANDLE hSpooler);
+ LONG (WINAPI *fpQueryValue)(HANDLE hcKey, LPCWSTR pszValue, PDWORD pType,
+ PBYTE pData, PDWORD pcbData, HANDLE hSpooler);
+} MONITORREG, *PMONITORREG;
+
+typedef struct _MONITORINIT {
+ DWORD cbSize;
+ HANDLE hSpooler;
+ HKEYMONITOR hckRegistryRoot;
+ PMONITORREG pMonitorReg;
+ BOOL bLocal;
+ LPCWSTR pszServerName;
+} MONITORINIT, *PMONITORINIT;
+
+typedef struct _MONITOR {
+ BOOL (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
+ DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned);
+ BOOL (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle);
+ BOOL (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName,
+ PHANDLE pHandle, struct _MONITOR *pMonitor);
+ BOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName,
+ DWORD JobId, DWORD Level, LPBYTE pDocInfo);
+ BOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
+ LPDWORD pcbWritten);
+ BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
+ LPDWORD pcbRead);
+ BOOL (WINAPI *pfnEndDocPort)(HANDLE hPort);
+ BOOL (WINAPI *pfnClosePort)(HANDLE hPort);
+ BOOL (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
+ BOOL (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer,
+ LPWSTR lpMonitorName);
+ BOOL (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ BOOL (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ BOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID,
+ LPWSTR pValueName, LPWSTR lpInBuffer,
+ DWORD cbInBuffer, LPWSTR lpOutBuffer,
+ DWORD cbOutBuffer, LPDWORD lpcbReturned);
+ BOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO,
+ DWORD reserved);
+ BOOL (WINAPI *pfnXcvOpenPort)(LPCWSTR pszObject, ACCESS_MASK GrantedAccess, PHANDLE phXcv);
+ DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName,
+ PBYTE pInputData, DWORD cbInputData,
+ PBYTE pOutputData, DWORD cbOutputData,
+ PDWORD pcbOutputNeeded);
+ BOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv);
+} MONITOR, *LPMONITOR;
+
+typedef struct _MONITOREX {
+ DWORD dwMonitorSize;
+ MONITOR Monitor;
+} MONITOREX, *LPMONITOREX;
+
+typedef struct _MONITOR2 {
+ DWORD cbSize;
+ BOOL (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts,
+ DWORD cbBuf, LPDWORD pcbNeeded,
+ LPDWORD pcReturned);
+ BOOL (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle);
+ BOOL (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName,
+ PHANDLE pHandle, struct _MONITOR2 *pMonitor2);
+ BOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName,
+ DWORD JobId, DWORD Level, LPBYTE pDocInfo);
+ BOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf,
+ LPDWORD pcbWritten);
+ BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer,
+ LPDWORD pcbRead);
+ BOOL (WINAPI *pfnEndDocPort)(HANDLE hPort);
+ BOOL (WINAPI *pfnClosePort)(HANDLE hPort);
+ BOOL (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName);
+ BOOL (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer,
+ LPWSTR lpMonitorName);
+ BOOL (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ BOOL (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName);
+ BOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID,
+ LPWSTR pValueName, LPWSTR lpInBuffer,
+ DWORD cbInBuffer, LPWSTR lpOutBuffer,
+ DWORD cbOutBuffer, LPDWORD lpcbReturned);
+ BOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO,
+ DWORD reserved);
+ BOOL (WINAPI *pfnXcvOpenPort)(HANDLE hMonitor, LPCWSTR pszObject,
+ ACCESS_MASK GrantedAccess, PHANDLE phXcv);
+ DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName,
+ PBYTE pInputData, DWORD cbInputData,
+ PBYTE pOutputData, DWORD cbOutputData,
+ PDWORD pcbOutputNeeded);
+ BOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv);
+ VOID (WINAPI *pfnShutdown)(HANDLE hMonitor);
+#if (NTDDI_VERSION >= NTDDI_WINXP)
+ DWORD (WINAPI *pfnSendRecvBidiDataFromPort)(HANDLE hPort, DWORD dwAccessBit,
+ LPCWSTR pAction,
+ PBIDI_REQUEST_CONTAINER pReqData,
+ PBIDI_RESPONSE_CONTAINER *ppResData);
+#endif
+#if (NTDDI_VERSION >= NTDDI_WIN7)
+ DWORD (WINAPI *pfnNotifyUsedPorts)(HANDLE hMonitor, DWORD cPorts,
+ PCWSTR *ppszPorts);
+
+ DWORD (WINAPI *pfnNotifyUnusedPorts)(HANDLE hMonitor, DWORD cPorts,
+ PCWSTR *ppszPorts);
+#endif
+} MONITOR2, *LPMONITOR2, *PMONITOR2;
+
+typedef struct _MONITORUI {
+ DWORD dwMonitorUISize;
+ BOOL (WINAPI *pfnAddPortUI)(PCWSTR pszServer, HWND hWnd,
+ PCWSTR pszPortNameIn, PWSTR *ppszPortNameOut);
+ BOOL (WINAPI *pfnConfigurePortUI)(PCWSTR pName, HWND hWnd, PCWSTR pPortName);
+ BOOL (WINAPI *pfnDeletePortUI)(PCWSTR pszServer, HWND hWnd, PCWSTR pszPortName);
+} MONITORUI, *PMONITORUI;
+
+#if (NTDDI_VERSION >= NTDDI_WINXP)
+
+typedef enum {
+ kMessageBox = 0
+} UI_TYPE;
+
+typedef struct {
+ DWORD cbSize;
+ LPWSTR pTitle;
+ LPWSTR pMessage;
+ DWORD Style;
+ DWORD dwTimeout;
+ BOOL bWait;
+} MESSAGEBOX_PARAMS, *PMESSAGEBOX_PARAMS;
+
+typedef struct {
+ UI_TYPE UIType;
+ MESSAGEBOX_PARAMS MessageBoxParams;
+} SHOWUIPARAMS, *PSHOWUIPARAMS;
+
+#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
+
+#if (NTDDI_VERSION >= NTDDI_WS03)
+#ifndef __ATTRIBUTE_INFO_3__
+#define __ATTRIBUTE_INFO_3__
+typedef struct _ATTRIBUTE_INFO_3 {
+ DWORD dwJobNumberOfPagesPerSide;
+ DWORD dwDrvNumberOfPagesPerSide;
+ DWORD dwNupBorderFlags;
+ DWORD dwJobPageOrderFlags;
+ DWORD dwDrvPageOrderFlags;
+ DWORD dwJobNumberOfCopies;
+ DWORD dwDrvNumberOfCopies;
+ DWORD dwColorOptimization;
+ short dmPrintQuality;
+ short dmYResolution;
+} ATTRIBUTE_INFO_3, *PATTRIBUTE_INFO_3;
+#endif /* __ATTRIBUTE_INFO_3__ */
+#endif /* (NTDDI_VERSION >= NTDDI_WS03) */
+
+#if (NTDDI_VERSION >= NTDDI_VISTA)
+
+typedef BOOL
+(CALLBACK *ROUTER_NOTIFY_CALLBACK)(
+ IN DWORD dwCommand,
+ IN PVOID pContext,
+ IN DWORD dwColor,
+ IN PPRINTER_NOTIFY_INFO pNofityInfo,
+ IN DWORD fdwFlags,
+ OUT PDWORD pdwResult);
+
+typedef enum _NOTIFICATION_CALLBACK_COMMANDS {
+ NOTIFICATION_COMMAND_NOTIFY,
+ NOTIFICATION_COMMAND_CONTEXT_ACQUIRE,
+ NOTIFICATION_COMMAND_CONTEXT_RELEASE
+} NOTIFICATION_CALLBACK_COMMANDS;
+
+typedef struct _NOTIFICATION_CONFIG_1 {
+ UINT cbSize;
+ DWORD fdwFlags;
+ ROUTER_NOTIFY_CALLBACK pfnNotifyCallback;
+ PVOID pContext;
+} NOTIFICATION_CONFIG_1, *PNOTIFICATION_CONFIG_1;
+
+typedef enum _NOTIFICATION_CONFIG_FLAGS {
+ NOTIFICATION_CONFIG_CREATE_EVENT = 1 << 0,
+ NOTIFICATION_CONFIG_REGISTER_CALLBACK = 1 << 1,
+ NOTIFICATION_CONFIG_EVENT_TRIGGER = 1 << 2,
+ NOTIFICATION_CONFIG_ASYNC_CHANNEL = 1 << 3
+} NOTIFICATION_CONFIG_FLAGS;
+
+typedef struct _SPLCLIENT_INFO_3 {
+ UINT cbSize;
+ DWORD dwFlags;
+ DWORD dwSize;
+ PWSTR pMachineName;
+ PWSTR pUserName;
+ DWORD dwBuildNum;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ WORD wProcessorArchitecture;
+ UINT64 hSplPrinter;
+} SPLCLIENT_INFO_3, *PSPLCLIENT_INFO_3, *LPSPLCLIENT_INFO_3;
+
+#ifndef __ATTRIBUTE_INFO_4__
+#define __ATTRIBUTE_INFO_4__
+
+typedef struct _ATTRIBUTE_INFO_4 {
+ DWORD dwJobNumberOfPagesPerSide;
+ DWORD dwDrvNumberOfPagesPerSide;
+ DWORD dwNupBorderFlags;
+ DWORD dwJobPageOrderFlags;
+ DWORD dwDrvPageOrderFlags;
+ DWORD dwJobNumberOfCopies;
+ DWORD dwDrvNumberOfCopies;
+ DWORD dwColorOptimization;
+ short dmPrintQuality;
+ short dmYResolution;
+ DWORD dwDuplexFlags;
+ DWORD dwNupDirection;
+ DWORD dwBookletFlags;
+ DWORD dwScalingPercentX;
+ DWORD dwScalingPercentY;
+} ATTRIBUTE_INFO_4, *PATTRIBUTE_INFO_4;
+
+#define REVERSE_PAGES_FOR_REVERSE_DUPLEX (0x00000001)
+#define DONT_SEND_EXTRA_PAGES_FOR_DUPLEX (0x00000001 << 1)
+
+#define RIGHT_THEN_DOWN (0x00000001)
+#define DOWN_THEN_RIGHT (0x00000001 << 1)
+#define LEFT_THEN_DOWN (0x00000001 << 2)
+#define DOWN_THEN_LEFT (0x00000001 << 3)
+
+#define BOOKLET_EDGE_LEFT 0x00000000
+#define BOOKLET_EDGE_RIGHT 0x00000001
+
+#endif /* __ATTRIBUTE_INFO_4__ */
+
+#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
+
+#if (OSVER(NTDDI_VERSION) == NTDDI_W2K)
+typedef SPLCLIENT_INFO_2_W2K SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2;
+#elif ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) || (OSVER(NTDDI_VERSION) == NTDDI_WS03))
+typedef SPLCLIENT_INFO_2_WINXP SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2;
+#else
+typedef SPLCLIENT_INFO_2_LONGHORN SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2;
+#endif /* (OSVER(NTDDI_VERSION) == NTDDI_W2K) */
+
+BOOL
+WINAPI
+InitializePrintProvidor(
+ OUT LPPRINTPROVIDOR pPrintProvidor,
+ IN DWORD cbPrintProvidor,
+ IN LPWSTR pFullRegistryPath OPTIONAL);
+
+HANDLE
+WINAPI
+OpenPrintProcessor(
+ IN LPWSTR pPrinterName,
+ IN PPRINTPROCESSOROPENDATA pPrintProcessorOpenData);
+
+BOOL
+WINAPI
+PrintDocumentOnPrintProcessor(
+ IN HANDLE hPrintProcessor,
+ IN LPWSTR pDocumentName);
+
+BOOL
+WINAPI
+ClosePrintProcessor(
+ IN OUT HANDLE hPrintProcessor);
+
+BOOL
+WINAPI
+ControlPrintProcessor(
+ IN HANDLE hPrintProcessor,
+ IN DWORD Command);
+
+DWORD
+WINAPI
+GetPrintProcessorCapabilities(
+ IN LPTSTR pValueName,
+ IN DWORD dwAttributes,
+ OUT LPBYTE pData,
+ IN DWORD nSize,
+ OUT LPDWORD pcbNeeded);
+
+BOOL
+WINAPI
+InitializeMonitor(
+ IN LPWSTR pRegistryRoot);
+
+BOOL
+WINAPI
+OpenPort(
+ IN LPWSTR pName,
+ OUT PHANDLE pHandle);
+
+BOOL
+WINAPI
+WritePort(
+ HANDLE hPort,
+ LPBYTE pBuffer,
+ DWORD cbBuf,
+ LPDWORD pcbWritten);
+
+BOOL
+WINAPI
+ReadPort(
+ HANDLE hPort,
+ LPBYTE pBuffer,
+ DWORD cbBuffer,
+ LPDWORD pcbRead);
+
+BOOL
+WINAPI
+ClosePort(
+ IN HANDLE hPort);
+
+BOOL
+WINAPI
+XcvOpenPort(
+ LPCWSTR pszObject,
+ ACCESS_MASK GrantedAccess,
+ PHANDLE phXcv);
+
+DWORD
+WINAPI
+XcvDataPort(
+ HANDLE hXcv,
+ LPCWSTR pszDataName,
+ PBYTE pInputData,
+ DWORD cbInputData,
+ PBYTE pOutputData,
+ DWORD cbOutputData,
+ PDWORD pcbOutputNeeded);
+
+BOOL
+WINAPI
+XcvClosePort(
+ IN HANDLE hXcv);
+
+BOOL
+WINAPI
+AddPortUI(
+ IN PCWSTR pszServer OPTIONAL,
+ IN HWND hWnd,
+ IN PCWSTR pszMonitorNameIn,
+ OUT PWSTR *ppszPortNameOut OPTIONAL);
+
+BOOL
+WINAPI
+ConfigurePortUI(
+ IN PCWSTR pszServer,
+ IN HWND hWnd,
+ IN PCWSTR pszPortName);
+
+BOOL
+WINAPI
+DeletePortUI(
+ IN PCWSTR pszServer,
+ IN HWND hWnd,
+ IN PCWSTR pszPortName);
+
+BOOL
+WINAPI
+SplDeleteSpoolerPortStart(
+ IN PCWSTR pPortName);
+
+BOOL
+WINAPI
+SplDeleteSpoolerPortEnd(
+ IN PCWSTR pName,
+ IN BOOL bDeletePort);
+
+BOOL
+WINAPI
+SpoolerCopyFileEvent(
+ IN LPWSTR pszPrinterName,
+ IN LPWSTR pszKey,
+ IN DWORD dwCopyFileEvent);
+
+DWORD
+WINAPI
+GenerateCopyFilePaths(
+ IN LPCWSTR pszPrinterName,
+ IN LPCWSTR pszDirectory,
+ IN LPBYTE pSplClientInfo,
+ IN DWORD dwLevel,
+ IN OUT LPWSTR pszSourceDir,
+ IN OUT LPDWORD pcchSourceDirSize,
+ IN OUT LPWSTR pszTargetDir,
+ IN OUT LPDWORD pcchTargetDirSize,
+ IN DWORD dwFlags);
+
+HANDLE WINAPI CreatePrinterIC(HANDLE hPrinter, LPDEVMODEW pDevMode);
+BOOL WINAPI PlayGdiScriptOnPrinterIC(HANDLE hPrinterIC, LPBYTE pIn,
+ DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul);
+BOOL WINAPI DeletePrinterIC(HANDLE hPrinterIC);
+BOOL WINAPI DevQueryPrint(HANDLE hPrinter, LPDEVMODEW pDevMode, DWORD *pResID);
+HANDLE WINAPI RevertToPrinterSelf(VOID);
+BOOL WINAPI ImpersonatePrinterClient(HANDLE hToken);
+BOOL WINAPI ReplyPrinterChangeNotification(HANDLE hNotify, DWORD fdwFlags,
+ PDWORD pdwResult, PVOID pPrinterNotifyInfo);
+BOOL WINAPI ReplyPrinterChangeNotificationEx(HANDLE hNotify, DWORD dwColor,
+ DWORD fdwFlags, PDWORD pdwResult,
+ PVOID pPrinterNotifyInfo);
+BOOL WINAPI PartialReplyPrinterChangeNotification(HANDLE hNotify,
+ PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc);
+PPRINTER_NOTIFY_INFO WINAPI RouterAllocPrinterNotifyInfo(DWORD cPrinterNotifyInfoData);
+BOOL WINAPI RouterFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo);
+
+BOOL WINAPI AppendPrinterNotifyInfoData(PPRINTER_NOTIFY_INFO pInfoDest,
+ PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc,
+ DWORD fdwFlags);
+DWORD WINAPI CallRouterFindFirstPrinterChangeNotification(HANDLE hPrinter,
+ DWORD fdwFlags,
+ DWORD fdwOptions,
+ HANDLE hNotify,
+ PPRINTER_NOTIFY_OPTIONS pPrinterNotifyOptions);
+BOOL WINAPI ProvidorFindFirstPrinterChangeNotification(HANDLE hPrinter,
+ DWORD fdwFlags,
+ DWORD fdwOptions,
+ HANDLE hNotify,
+ PVOID pvReserved0,
+ PVOID pvReserved1);
+BOOL WINAPI ProvidorFindClosePrinterChangeNotification(HANDLE hPrinter);
+
+/* Spooler */
+BOOL WINAPI SpoolerFindFirstPrinterChangeNotification(HANDLE hPrinter,
+ DWORD fdwFlags,
+ DWORD fdwOptions,
+ PHANDLE phEvent,
+ PVOID pPrinterNotifyOptions,
+ PVOID pvReserved);
+BOOL WINAPI SpoolerFindNextPrinterChangeNotification(HANDLE hPrinter,
+ LPDWORD pfdwChange,
+ PVOID pvReserved0,
+ PVOID ppPrinterNotifyInfo);
+VOID WINAPI SpoolerFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo);
+BOOL WINAPI SpoolerFindClosePrinterChangeNotification(HANDLE hPrinter);
+
+/* Port monitor / Language monitor / Print monitor */
+LPMONITOR2 WINAPI InitializePrintMonitor2(PMONITORINIT pMonitorInit,
+ PHANDLE phMonitor);
+PMONITORUI WINAPI InitializePrintMonitorUI(VOID);
+LPMONITOREX WINAPI InitializePrintMonitor(LPWSTR pRegistryRoot);
+BOOL WINAPI InitializeMonitorEx(LPWSTR pRegistryRoot, LPMONITOR pMonitor);
+
+#if (NTDDI_VERSION >= NTDDI_WINXP)
+
+PBIDI_RESPONSE_CONTAINER WINAPI RouterAllocBidiResponseContainer(DWORD Count);
+PVOID WINAPI RouterAllocBidiMem(size_t NumBytes);
+DWORD WINAPI RouterFreeBidiResponseContainer(PBIDI_RESPONSE_CONTAINER pData);
+VOID WINAPI RouterFreeBidiMem(PVOID pMemPointer);
+
+BOOL
+WINAPI
+SplPromptUIInUsersSession(
+ IN HANDLE hPrinter,
+ IN DWORD JobId,
+ IN PSHOWUIPARAMS pUIParams,
+ OUT DWORD *pResponse);
+
+DWORD
+WINAPI
+SplIsSessionZero(
+ IN HANDLE hPrinter,
+ IN DWORD JobId,
+ OUT BOOL *pIsSessionZero);
+
+#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
+
+#if (NTDDI_VERSION >= NTDDI_WS03)
+BOOL
+WINAPI
+GetJobAttributes(
+ IN LPWSTR pPrinterName,
+ IN LPDEVMODEW pDevmode,
+ OUT PATTRIBUTE_INFO_3 pAttributeInfo);
+#endif
+
+#if (NTDDI_VERSION >= NTDDI_VISTA)
+
+#define FILL_WITH_DEFAULTS 0x1
+
+BOOL
+WINAPI
+GetJobAttributesEx(
+ IN LPWSTR pPrinterName,
+ IN LPDEVMODEW pDevmode,
+ IN DWORD dwLevel,
+ OUT LPBYTE pAttributeInfo,
+ IN DWORD nSize,
+ IN DWORD dwFlags);
+
+BOOL WINAPI SpoolerRefreshPrinterChangeNotification(HANDLE hPrinter,
+ DWORD dwColor,
+ PPRINTER_NOTIFY_OPTIONS pOptions,
+ PPRINTER_NOTIFY_INFO *ppInfo);
+
+#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
+
+/* FIXME : The following declarations are not present in the official header */
+
+BOOL WINAPI OpenPrinterToken(PHANDLE phToken);
+BOOL WINAPI SetPrinterToken(HANDLE hToken);
+BOOL WINAPI ClosePrinterToken(HANDLE hToken);
+BOOL WINAPI InstallPrintProcessor(HWND hWnd);
+
+#ifdef __cplusplus
+}
+#endif
#define PORT_STATUS_TONER_LOW 10
#define PORT_STATUS_WARMING_UP 11
#define PORT_STATUS_POWER_SAVE 12
+
+typedef struct _PRINTER_NOTIFY_OPTIONS_TYPE {
+ WORD Type;
+ WORD Reserved0;
+ DWORD Reserved1;
+ DWORD Reserved2;
+ DWORD Count;
+ PWORD pFields;
+} PRINTER_NOTIFY_OPTIONS_TYPE, *PPRINTER_NOTIFY_OPTIONS_TYPE, *LPPRINTER_NOTIFY_OPTIONS_TYPE;
+
+typedef struct _PRINTER_NOTIFY_OPTIONS {
+ DWORD Version;
+ DWORD Flags;
+ DWORD Count;
+ PPRINTER_NOTIFY_OPTIONS_TYPE pTypes;
+} PRINTER_NOTIFY_OPTIONS, *PPRINTER_NOTIFY_OPTIONS, *LPPRINTER_NOTIFY_OPTIONS;
+
#ifndef RC_INVOKED
typedef struct _ADDJOB_INFO_1A {
LPSTR Path;
#define WSPAPI WSAAPI
-typedef struct WSPData {
- WORD wVersion;
- WORD wHighVersion;
- WCHAR szDescription[WSPDESCRIPTION_LEN+1];
-} WSPDATA, FAR *LPWSPDATA;
-
typedef struct _WSATHREADID {
HANDLE ThreadHandle;
DWORD_PTR Reserved;
} WSATHREADID, FAR *LPWSATHREADID;
-/* Service provider procedure table */
-typedef struct _WSPPROC_TABLE {
- LPWSPACCEPT lpWSPAccept;
- LPWSPADDRESSTOSTRING lpWSPAddressToString;
- LPWSPASYNCSELECT lpWSPAsyncSelect;
- LPWSPBIND lpWSPBind;
- LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
- LPWSPCLEANUP lpWSPCleanup;
- LPWSPCLOSESOCKET lpWSPCloseSocket;
- LPWSPCONNECT lpWSPConnect;
- LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
- LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
- LPWSPEVENTSELECT lpWSPEventSelect;
- LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
- LPWSPGETPEERNAME lpWSPGetPeerName;
- LPWSPGETSOCKNAME lpWSPGetSockName;
- LPWSPGETSOCKOPT lpWSPGetSockOpt;
- LPWSPGETQOSBYNAME lpWSPGetQOSByName;
- LPWSPIOCTL lpWSPIoctl;
- LPWSPJOINLEAF lpWSPJoinLeaf;
- LPWSPLISTEN lpWSPListen;
- LPWSPRECV lpWSPRecv;
- LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
- LPWSPRECVFROM lpWSPRecvFrom;
- LPWSPSELECT lpWSPSelect;
- LPWSPSEND lpWSPSend;
- LPWSPSENDDISCONNECT lpWSPSendDisconnect;
- LPWSPSENDTO lpWSPSendTo;
- LPWSPSETSOCKOPT lpWSPSetSockOpt;
- LPWSPSHUTDOWN lpWSPShutdown;
- LPWSPSOCKET lpWSPSocket;
- LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
-} WSPPROC_TABLE, FAR* LPWSPPROC_TABLE;
-
-/* Service Provider upcall table */
-typedef struct _WSPUPCALLTABLE {
- LPWPUCLOSEEVENT lpWPUCloseEvent;
- LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
- LPWPUCREATEEVENT lpWPUCreateEvent;
- LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
- LPWPUFDISSET lpWPUFDIsSet;
- LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
- LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
- LPWPUPOSTMESSAGE lpWPUPostMessage;
- LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
- LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
- LPWPUQUEUEAPC lpWPUQueueApc;
- LPWPURESETEVENT lpWPUResetEvent;
- LPWPUSETEVENT lpWPUSetEvent;
- LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
- LPWPUCLOSETHREAD lpWPUCloseThread;
-} WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
-
-#if(_WIN32_WINNT >= 0x0600)
-
-#define LSP_SYSTEM 0x80000000
-#define LSP_INSPECTOR 0x00000001
-#define LSP_REDIRECTOR 0x00000002
-#define LSP_PROXY 0x00000004
-#define LSP_FIREWALL 0x00000008
-#define LSP_INBOUND_MODIFY 0x00000010
-#define LSP_OUTBOUND_MODIFY 0x00000020
-#define LSP_CRYPTO_COMPRESS 0x00000040
-#define LSP_LOCAL_CACHE 0x00000080
-
-typedef enum _WSC_PROVIDER_INFO_TYPE {
- ProviderInfoLspCategories,
- ProviderInfoAudit
-} WSC_PROVIDER_INFO_TYPE ;
-
-typedef struct _WSC_PROVIDER_AUDIT_INFO {
- DWORD RecordSize;
- PVOID Reserved;
-} WSC_PROVIDER_AUDIT_INFO;
-
-#endif /* (_WIN32_WINNT >= 0x0600) */
-
-typedef struct _NSP_ROUTINE {
- DWORD cbSize;
- DWORD dwMajorVersion;
- DWORD dwMinorVersion;
- LPNSPCLEANUP NSPCleanup;
- LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
- LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
- LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
- LPNSPSETSERVICE NSPSetService;
- LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
- LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
- LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
- LPNSPIOCTL NSPIoctl;
-} NSP_ROUTINE, *PNSP_ROUTINE, FAR* LPNSP_ROUTINE;
-
-typedef struct _NSPV2_ROUTINE {
- DWORD cbSize;
- DWORD dwMajorVersion;
- DWORD dwMinorVersion;
- LPNSPV2STARTUP NSPv2Startup;
- LPNSPV2CLEANUP NSPv2Cleanup;
- LPNSPV2LOOKUPSERVICEBEGIN NSPv2LookupServiceBegin;
- LPNSPV2LOOKUPSERVICENEXTEX NSPv2LookupServiceNextEx;
- LPNSPV2LOOKUPSERVICEEND NSPv2LookupServiceEnd;
- LPNSPV2SETSERVICEEX NSPv2SetServiceEx;
- LPNSPV2CLIENTSESSIONRUNDOWN NSPv2ClientSessionRundown;
-} NSPV2_ROUTINE, *PNSPV2_ROUTINE, *LPNSPV2_ROUTINE;
-typedef const NSPV2_ROUTINE *PCNSPV2_ROUTINE, *LPCNSPV2_ROUTINE;
+typedef struct WSPData {
+ WORD wVersion;
+ WORD wHighVersion;
+ WCHAR szDescription[WSPDESCRIPTION_LEN+1];
+} WSPDATA, FAR *LPWSPDATA;
typedef BOOL
(CALLBACK FAR *LPBLOCKINGCALLBACK)(
DWORD_PTR dwContext);
-typedef VOID
-(CALLBACK FAR *LPWSAUSERAPC)(
- DWORD_PTR dwContext);
-
typedef SOCKET
(WSPAPI *LPWSPACCEPT)(
IN SOCKET s,
IN DWORD_PTR dwCallbackData OPTIONAL,
OUT LPINT lpErrno);
+typedef VOID
+(CALLBACK FAR *LPWSAUSERAPC)(
+ DWORD_PTR dwContext);
+
typedef INT
(WSPAPI *LPWSPADDRESSTOSTRING)(
IN LPSOCKADDR lpsaAddress,
IN DWORD cbTransferred,
OUT LPINT lpErrno);
-typedef int
-(WSPAPI *LPWSPSTARTUP)(
- IN WORD wVersionRequested,
- IN LPWSPDATA lpWSPData,
- IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
- IN WSPUPCALLTABLE UpcallTable,
- OUT LPWSPPROC_TABLE lpProcTable);
-
typedef int
(WSPAPI *LPWSCENUMPROTOCOLS)(
IN LPINT lpiProtocols OPTIONAL,
IN LPGUID lpProviderId,
IN BOOL fEnable);
+/* Service provider procedure table */
+typedef struct _WSPPROC_TABLE {
+ LPWSPACCEPT lpWSPAccept;
+ LPWSPADDRESSTOSTRING lpWSPAddressToString;
+ LPWSPASYNCSELECT lpWSPAsyncSelect;
+ LPWSPBIND lpWSPBind;
+ LPWSPCANCELBLOCKINGCALL lpWSPCancelBlockingCall;
+ LPWSPCLEANUP lpWSPCleanup;
+ LPWSPCLOSESOCKET lpWSPCloseSocket;
+ LPWSPCONNECT lpWSPConnect;
+ LPWSPDUPLICATESOCKET lpWSPDuplicateSocket;
+ LPWSPENUMNETWORKEVENTS lpWSPEnumNetworkEvents;
+ LPWSPEVENTSELECT lpWSPEventSelect;
+ LPWSPGETOVERLAPPEDRESULT lpWSPGetOverlappedResult;
+ LPWSPGETPEERNAME lpWSPGetPeerName;
+ LPWSPGETSOCKNAME lpWSPGetSockName;
+ LPWSPGETSOCKOPT lpWSPGetSockOpt;
+ LPWSPGETQOSBYNAME lpWSPGetQOSByName;
+ LPWSPIOCTL lpWSPIoctl;
+ LPWSPJOINLEAF lpWSPJoinLeaf;
+ LPWSPLISTEN lpWSPListen;
+ LPWSPRECV lpWSPRecv;
+ LPWSPRECVDISCONNECT lpWSPRecvDisconnect;
+ LPWSPRECVFROM lpWSPRecvFrom;
+ LPWSPSELECT lpWSPSelect;
+ LPWSPSEND lpWSPSend;
+ LPWSPSENDDISCONNECT lpWSPSendDisconnect;
+ LPWSPSENDTO lpWSPSendTo;
+ LPWSPSETSOCKOPT lpWSPSetSockOpt;
+ LPWSPSHUTDOWN lpWSPShutdown;
+ LPWSPSOCKET lpWSPSocket;
+ LPWSPSTRINGTOADDRESS lpWSPStringToAddress;
+} WSPPROC_TABLE, FAR* LPWSPPROC_TABLE;
+
typedef INT
(WSAAPI *LPNSPCLEANUP)(
IN LPGUID lpProviderId);
IN LPDWORD lpdwBufSize,
IN LPWSASERVICECLASSINFOW lpServiceClassInfo);
-typedef INT
-(WSAAPI *LPNSPSTARTUP)(
- IN LPGUID lpProviderId,
- IN OUT LPNSP_ROUTINE lpnspRoutines);
-
typedef INT
(WSAAPI *LPNSPV2STARTUP)(
IN LPGUID lpProviderId,
IN LPGUID lpProviderId,
IN LPVOID pvClientSessionArg);
+/* Service Provider upcall table */
+typedef struct _WSPUPCALLTABLE {
+ LPWPUCLOSEEVENT lpWPUCloseEvent;
+ LPWPUCLOSESOCKETHANDLE lpWPUCloseSocketHandle;
+ LPWPUCREATEEVENT lpWPUCreateEvent;
+ LPWPUCREATESOCKETHANDLE lpWPUCreateSocketHandle;
+ LPWPUFDISSET lpWPUFDIsSet;
+ LPWPUGETPROVIDERPATH lpWPUGetProviderPath;
+ LPWPUMODIFYIFSHANDLE lpWPUModifyIFSHandle;
+ LPWPUPOSTMESSAGE lpWPUPostMessage;
+ LPWPUQUERYBLOCKINGCALLBACK lpWPUQueryBlockingCallback;
+ LPWPUQUERYSOCKETHANDLECONTEXT lpWPUQuerySocketHandleContext;
+ LPWPUQUEUEAPC lpWPUQueueApc;
+ LPWPURESETEVENT lpWPUResetEvent;
+ LPWPUSETEVENT lpWPUSetEvent;
+ LPWPUOPENCURRENTTHREAD lpWPUOpenCurrentThread;
+ LPWPUCLOSETHREAD lpWPUCloseThread;
+} WSPUPCALLTABLE, FAR* LPWSPUPCALLTABLE;
+
+typedef int
+(WSPAPI *LPWSPSTARTUP)(
+ IN WORD wVersionRequested,
+ IN LPWSPDATA lpWSPData,
+ IN LPWSAPROTOCOL_INFOW lpProtocolInfo,
+ IN WSPUPCALLTABLE UpcallTable,
+ OUT LPWSPPROC_TABLE lpProcTable);
+
+#if (_WIN32_WINNT >= 0x0600)
+
+#define LSP_SYSTEM 0x80000000
+#define LSP_INSPECTOR 0x00000001
+#define LSP_REDIRECTOR 0x00000002
+#define LSP_PROXY 0x00000004
+#define LSP_FIREWALL 0x00000008
+#define LSP_INBOUND_MODIFY 0x00000010
+#define LSP_OUTBOUND_MODIFY 0x00000020
+#define LSP_CRYPTO_COMPRESS 0x00000040
+#define LSP_LOCAL_CACHE 0x00000080
+
+typedef enum _WSC_PROVIDER_INFO_TYPE {
+ ProviderInfoLspCategories,
+ ProviderInfoAudit
+} WSC_PROVIDER_INFO_TYPE ;
+
+typedef struct _WSC_PROVIDER_AUDIT_INFO {
+ DWORD RecordSize;
+ PVOID Reserved;
+} WSC_PROVIDER_AUDIT_INFO;
+
+#endif /* (_WIN32_WINNT >= 0x0600) */
+
+typedef struct _NSP_ROUTINE {
+ DWORD cbSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ LPNSPCLEANUP NSPCleanup;
+ LPNSPLOOKUPSERVICEBEGIN NSPLookupServiceBegin;
+ LPNSPLOOKUPSERVICENEXT NSPLookupServiceNext;
+ LPNSPLOOKUPSERVICEEND NSPLookupServiceEnd;
+ LPNSPSETSERVICE NSPSetService;
+ LPNSPINSTALLSERVICECLASS NSPInstallServiceClass;
+ LPNSPREMOVESERVICECLASS NSPRemoveServiceClass;
+ LPNSPGETSERVICECLASSINFO NSPGetServiceClassInfo;
+ LPNSPIOCTL NSPIoctl;
+} NSP_ROUTINE, *PNSP_ROUTINE, FAR* LPNSP_ROUTINE;
+
+typedef INT
+(WSAAPI *LPNSPSTARTUP)(
+ IN LPGUID lpProviderId,
+ IN OUT LPNSP_ROUTINE lpnspRoutines);
+
+typedef struct _NSPV2_ROUTINE {
+ DWORD cbSize;
+ DWORD dwMajorVersion;
+ DWORD dwMinorVersion;
+ LPNSPV2STARTUP NSPv2Startup;
+ LPNSPV2CLEANUP NSPv2Cleanup;
+ LPNSPV2LOOKUPSERVICEBEGIN NSPv2LookupServiceBegin;
+ LPNSPV2LOOKUPSERVICENEXTEX NSPv2LookupServiceNextEx;
+ LPNSPV2LOOKUPSERVICEEND NSPv2LookupServiceEnd;
+ LPNSPV2SETSERVICEEX NSPv2SetServiceEx;
+ LPNSPV2CLIENTSESSIONRUNDOWN NSPv2ClientSessionRundown;
+} NSPV2_ROUTINE, *PNSPV2_ROUTINE, *LPNSPV2_ROUTINE;
+typedef const NSPV2_ROUTINE *PCNSPV2_ROUTINE, *LPCNSPV2_ROUTINE;
+
int
WSPAPI
WSPStartup(
IN OUT LPDWORD lpdwBufferLength,
OUT LPINT lpErrno);
-#if defined(_WIN32_WINNT >= 0x0501)
+#if (_WIN32_WINNT >= 0x0501)
int
WSPAPI
#define _WSPIAPI_STRCPY_S strcpy_s
#define _WSPIAPI_STRCAT_S strcat_s
-#define _WSPIAPI_STRNCPY_S strncpy_s
-#define _WSPIAPI_SPRINTF_S_1 sprintf_s
#else
#define _WSPIAPI_STRCPY_S(_Dst, _Size, _Src) strcpy((_Dst), (_Src))
#define _WSPIAPI_STRCAT_S(_Dst, _Size, _Src) strcat((_Dst), (_Src))
-#define _WSPIAPI_STRNCPY_S(_Dst, _Size, _Src, _Count) strncpy((_Dst), (_Src), (_Count)); (_Dst)[(_Size) - 1] = 0
-#define _WSPIAPI_SPRINTF_S_1(_Dst, _Size, _Format, _Arg1) sprintf((_Dst), (_Format), (_Arg1))
-#endif /* #if defined(__GOT_SECURE_LIB__) && __GOT_SECURE_LIB__ >= 200402L */
+#endif /* defined(__GOT_SECURE_LIB__) && __GOT_SECURE_LIB__ >= 200402L */
+
+#define _WSPIAPI_STRNCPY_S(_Dst, _Size, _Src, _Count) strncpy((_Dst), (_Src), (_Count)); (_Dst)[(_Size) - 1] = 0 //FIXME
+#define _WSPIAPI_SPRINTF_S_1(_Dst, _Size, _Format, _Arg1) sprintf((_Dst), (_Format), (_Arg1)) //FIXME
#if !defined(_WSPIAPI_COUNTOF)
(WINAPI *WSPIAPI_PFREEADDRINFO)(
IN struct addrinfo *ai);
-__inline
+FORCEINLINE
char *
WINAPI
WspiapiStrdup(
return pszMemory;
}
-__inline
+FORCEINLINE
BOOL
WINAPI
WspiapiParseV4Address(
return TRUE;
}
-__inline
+FORCEINLINE
struct addrinfo *
WINAPI
WspiapiNewAddrInfo(
return ptNew;
}
-__inline
+FORCEINLINE
int
WINAPI
WspiapiQueryDNS(
}
}
-__inline
+FORCEINLINE
int
WINAPI
WspiapiLookupNode(
-__inline
+FORCEINLINE
int
WINAPI
WspiapiClone(
return 0;
}
-__inline
+FORCEINLINE
void
WINAPI
WspiapiLegacyFreeAddrInfo(
}
}
-__inline
+FORCEINLINE
int
WINAPI
WspiapiLegacyGetAddrInfo(
return (iError);
}
-__inline
+FORCEINLINE
int
WINAPI
WspiapiLegacyGetNameInfo(
"freeaddrinfo", (FARPROC) WspiapiLegacyFreeAddrInfo, \
}
-__inline
+FORCEINLINE
FARPROC
WINAPI
WspiapiLoad(
return (rgtGlobal[wFunction].pfAddress);
}
-__inline
+FORCEINLINE
int
WINAPI
WspiapiGetAddrInfo(
return iError;
}
-__inline
+FORCEINLINE
int
WINAPI
WspiapiGetNameInfo(
return iError;
}
-__inline
+FORCEINLINE
void
WINAPI
WspiapiFreeAddrInfo(
--- /dev/null
+
+#include_next <winddiui.h>
--- /dev/null
+
+#include_next <winsplp.h>