- Move winsplp.h to PSDK and improve it.
authorAmine Khaldi <amine.khaldi@reactos.org>
Wed, 7 Apr 2010 00:02:57 +0000 (00:02 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Wed, 7 Apr 2010 00:02:57 +0000 (00:02 +0000)
- 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

include/ddk/winsplp.h [deleted file]
include/psdk/compstui.h
include/psdk/winsplp.h [new file with mode: 0644]
include/psdk/winspool.h
include/psdk/ws2spi.h
include/psdk/wspiapi.h
include/reactos/wine/ddk/winddiui.h [new file with mode: 0644]
include/reactos/wine/ddk/winsplp.h [new file with mode: 0644]

diff --git a/include/ddk/winsplp.h b/include/ddk/winsplp.h
deleted file mode 100644 (file)
index cc4bf6f..0000000
+++ /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
index 4b5e584..fd42773 100644 (file)
@@ -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 (file)
index 0000000..38a98ed
--- /dev/null
@@ -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
index d8c9195..92d89aa 100644 (file)
@@ -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;
index 998f199..3126c22 100644 (file)
@@ -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
index 12c8ac4..4b4b5ce 100644 (file)
@@ -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 (file)
index 0000000..3593909
--- /dev/null
@@ -0,0 +1,2 @@
+
+#include_next <winddiui.h>
diff --git a/include/reactos/wine/ddk/winsplp.h b/include/reactos/wine/ddk/winsplp.h
new file mode 100644 (file)
index 0000000..5014e08
--- /dev/null
@@ -0,0 +1,2 @@
+
+#include_next <winsplp.h>