From: Amine Khaldi Date: Wed, 7 Apr 2010 00:02:57 +0000 (+0000) Subject: - Move winsplp.h to PSDK and improve it. X-Git-Tag: backups/header-work@57446~55 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=15ca120bcc0280fecf7d7a8bc213dee58eff43ca - Move winsplp.h to PSDK and improve it. - 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 --- diff --git a/include/ddk/winsplp.h b/include/ddk/winsplp.h deleted file mode 100644 index cc4bf6f15cc..00000000000 --- a/include/ddk/winsplp.h +++ /dev/null @@ -1,659 +0,0 @@ -#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 diff --git a/include/psdk/compstui.h b/include/psdk/compstui.h index 4b5e584e172..fd427734597 100644 --- a/include/psdk/compstui.h +++ b/include/psdk/compstui.h @@ -677,6 +677,16 @@ extern "C" { /* 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; @@ -688,16 +698,6 @@ typedef struct _OPTCOMBO { } 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; diff --git a/include/psdk/winsplp.h b/include/psdk/winsplp.h new file mode 100644 index 00000000000..38a98ed926c --- /dev/null +++ b/include/psdk/winsplp.h @@ -0,0 +1,786 @@ +#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 diff --git a/include/psdk/winspool.h b/include/psdk/winspool.h index d8c91959aaf..92d89aa6a70 100644 --- a/include/psdk/winspool.h +++ b/include/psdk/winspool.h @@ -218,6 +218,23 @@ extern "C" { #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; diff --git a/include/psdk/ws2spi.h b/include/psdk/ws2spi.h index 998f1994e92..3126c22b385 100644 --- a/include/psdk/ws2spi.h +++ b/include/psdk/ws2spi.h @@ -37,131 +37,21 @@ extern "C" { #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, @@ -171,6 +61,10 @@ typedef SOCKET IN DWORD_PTR dwCallbackData OPTIONAL, OUT LPINT lpErrno); +typedef VOID +(CALLBACK FAR *LPWSAUSERAPC)( + DWORD_PTR dwContext); + typedef INT (WSPAPI *LPWSPADDRESSTOSTRING)( IN LPSOCKADDR lpsaAddress, @@ -511,14 +405,6 @@ typedef int 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, @@ -563,6 +449,40 @@ typedef INT 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); @@ -624,11 +544,6 @@ typedef INT 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, @@ -673,6 +588,91 @@ typedef VOID 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( @@ -690,7 +690,7 @@ WSCEnumProtocols( IN OUT LPDWORD lpdwBufferLength, OUT LPINT lpErrno); -#if defined(_WIN32_WINNT >= 0x0501) +#if (_WIN32_WINNT >= 0x0501) int WSPAPI diff --git a/include/psdk/wspiapi.h b/include/psdk/wspiapi.h index 12c8ac4f2c4..4b4b5ce6008 100644 --- a/include/psdk/wspiapi.h +++ b/include/psdk/wspiapi.h @@ -15,17 +15,16 @@ extern "C" { #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) @@ -67,7 +66,7 @@ typedef void (WINAPI *WSPIAPI_PFREEADDRINFO)( IN struct addrinfo *ai); -__inline +FORCEINLINE char * WINAPI WspiapiStrdup( @@ -84,7 +83,7 @@ WspiapiStrdup( return pszMemory; } -__inline +FORCEINLINE BOOL WINAPI WspiapiParseV4Address( @@ -104,7 +103,7 @@ WspiapiParseV4Address( return TRUE; } -__inline +FORCEINLINE struct addrinfo * WINAPI WspiapiNewAddrInfo( @@ -135,7 +134,7 @@ WspiapiNewAddrInfo( return ptNew; } -__inline +FORCEINLINE int WINAPI WspiapiQueryDNS( @@ -174,7 +173,7 @@ WspiapiQueryDNS( } } -__inline +FORCEINLINE int WINAPI WspiapiLookupNode( @@ -214,7 +213,7 @@ WspiapiLookupNode( -__inline +FORCEINLINE int WINAPI WspiapiClone( @@ -237,7 +236,7 @@ WspiapiClone( return 0; } -__inline +FORCEINLINE void WINAPI WspiapiLegacyFreeAddrInfo( @@ -253,7 +252,7 @@ WspiapiLegacyFreeAddrInfo( } } -__inline +FORCEINLINE int WINAPI WspiapiLegacyGetAddrInfo( @@ -353,7 +352,7 @@ WspiapiLegacyGetAddrInfo( return (iError); } -__inline +FORCEINLINE int WINAPI WspiapiLegacyGetNameInfo( @@ -442,7 +441,7 @@ typedef struct { "freeaddrinfo", (FARPROC) WspiapiLegacyFreeAddrInfo, \ } -__inline +FORCEINLINE FARPROC WINAPI WspiapiLoad( @@ -504,7 +503,7 @@ WspiapiLoad( return (rgtGlobal[wFunction].pfAddress); } -__inline +FORCEINLINE int WINAPI WspiapiGetAddrInfo( @@ -523,7 +522,7 @@ WspiapiGetAddrInfo( return iError; } -__inline +FORCEINLINE int WINAPI WspiapiGetNameInfo( @@ -545,7 +544,7 @@ WspiapiGetNameInfo( return iError; } -__inline +FORCEINLINE void WINAPI WspiapiFreeAddrInfo( diff --git a/include/reactos/wine/ddk/winddiui.h b/include/reactos/wine/ddk/winddiui.h new file mode 100644 index 00000000000..35939098e85 --- /dev/null +++ b/include/reactos/wine/ddk/winddiui.h @@ -0,0 +1,2 @@ + +#include_next diff --git a/include/reactos/wine/ddk/winsplp.h b/include/reactos/wine/ddk/winsplp.h new file mode 100644 index 00000000000..5014e086511 --- /dev/null +++ b/include/reactos/wine/ddk/winsplp.h @@ -0,0 +1,2 @@ + +#include_next