| 1 | /* |
| 2 | * winsplp.h |
| 3 | * |
| 4 | * This file is part of the ReactOS PSDK package. |
| 5 | * |
| 6 | * Contributors: |
| 7 | * Created by Amine Khaldi. |
| 8 | * |
| 9 | * THIS SOFTWARE IS NOT COPYRIGHTED |
| 10 | * |
| 11 | * This source code is offered for use in the public domain. You may |
| 12 | * use, modify or distribute it freely. |
| 13 | * |
| 14 | * This code is distributed in the hope that it will be useful but |
| 15 | * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY |
| 16 | * DISCLAIMED. This includes but is not limited to warranties of |
| 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. |
| 18 | * |
| 19 | */ |
| 20 | |
| 21 | #pragma once |
| 22 | |
| 23 | #ifdef __cplusplus |
| 24 | extern "C" { |
| 25 | #endif |
| 26 | |
| 27 | #if (STRICT && (NTDDI_VERSION >= NTDDI_VISTA)) |
| 28 | #define HKEYMONITOR HKEY |
| 29 | #else |
| 30 | #define HKEYMONITOR HANDLE |
| 31 | #endif |
| 32 | |
| 33 | #define PRINTER_NOTIFY_STATUS_ENDPOINT 1 |
| 34 | #define PRINTER_NOTIFY_STATUS_POLL 2 |
| 35 | #define PRINTER_NOTIFY_STATUS_INFO 4 |
| 36 | |
| 37 | #define ROUTER_UNKNOWN 0 |
| 38 | #define ROUTER_SUCCESS 1 |
| 39 | #define ROUTER_STOP_ROUTING 2 |
| 40 | |
| 41 | #if (NTDDI_VERSION >= NTDDI_WINXP) |
| 42 | #define MONITOR2_SIZE_WIN2K (sizeof(DWORD) + (sizeof(PVOID)*18)) |
| 43 | #endif |
| 44 | |
| 45 | #define COPYFILE_EVENT_SET_PRINTER_DATAEX 1 |
| 46 | #define COPYFILE_EVENT_DELETE_PRINTER 2 |
| 47 | #define COPYFILE_EVENT_ADD_PRINTER_CONNECTION 3 |
| 48 | #define COPYFILE_EVENT_DELETE_PRINTER_CONNECTION 4 |
| 49 | #define COPYFILE_EVENT_FILES_CHANGED 5 |
| 50 | |
| 51 | #define COPYFILE_FLAG_CLIENT_SPOOLER 0x00000001 |
| 52 | #define COPYFILE_FLAG_SERVER_SPOOLER 0x00000002 |
| 53 | |
| 54 | #define PRINTER_NOTIFY_INFO_DATA_COMPACT 1 |
| 55 | |
| 56 | typedef struct _PRINTER_NOTIFY_INIT { |
| 57 | DWORD Size; |
| 58 | DWORD Reserved; |
| 59 | DWORD PollTime; |
| 60 | } PRINTER_NOTIFY_INIT, *LPPRINTER_NOTIFY_INIT, *PPRINTER_NOTIFY_INIT; |
| 61 | |
| 62 | typedef struct _SPLCLIENT_INFO_1 { |
| 63 | DWORD dwSize; |
| 64 | LPWSTR pMachineName; |
| 65 | LPWSTR pUserName; |
| 66 | DWORD dwBuildNum; |
| 67 | DWORD dwMajorVersion; |
| 68 | DWORD dwMinorVersion; |
| 69 | WORD wProcessorArchitecture; |
| 70 | } SPLCLIENT_INFO_1, *LPSPLCLIENT_INFO_1, *PSPLCLIENT_INFO_1; |
| 71 | |
| 72 | typedef struct _SPLCLIENT_INFO_2_V1{ |
| 73 | ULONG_PTR hSplPrinter; |
| 74 | } SPLCLIENT_INFO_2_W2K; |
| 75 | |
| 76 | typedef struct _SPLCLIENT_INFO_2_V2{ |
| 77 | #ifdef _WIN64 |
| 78 | DWORD64 hSplPrinter; |
| 79 | #else |
| 80 | DWORD32 hSplPrinter; |
| 81 | #endif |
| 82 | } SPLCLIENT_INFO_2_WINXP; |
| 83 | |
| 84 | typedef struct _SPLCLIENT_INFO_2_V3{ |
| 85 | UINT64 hSplPrinter; |
| 86 | } SPLCLIENT_INFO_2_LONGHORN; |
| 87 | |
| 88 | typedef struct _PRINTPROVIDOR { |
| 89 | WINBOOL (WINAPI *fpOpenPrinter)(PWSTR lpPrinterName, HANDLE *phPrinter, |
| 90 | PPRINTER_DEFAULTSW pDefault); |
| 91 | WINBOOL (WINAPI *fpSetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level, |
| 92 | LPBYTE pJob, DWORD Command); |
| 93 | WINBOOL (WINAPI *fpGetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level, |
| 94 | LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded); |
| 95 | WINBOOL (WINAPI *fpEnumJobs)(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs, |
| 96 | DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded, |
| 97 | LPDWORD pcReturned); |
| 98 | HANDLE (WINAPI *fpAddPrinter)(LPWSTR pName, DWORD Level, LPBYTE pPrinter); |
| 99 | WINBOOL (WINAPI *fpDeletePrinter)(HANDLE hPrinter); |
| 100 | WINBOOL (WINAPI *fpSetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, |
| 101 | DWORD Command); |
| 102 | WINBOOL (WINAPI *fpGetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, |
| 103 | DWORD cbBuf, LPDWORD pcbNeeded); |
| 104 | WINBOOL (WINAPI *fpEnumPrinters)(DWORD dwType, LPWSTR lpszName, DWORD dwLevel, |
| 105 | LPBYTE lpbPrinters, DWORD cbBuf, LPDWORD lpdwNeeded, |
| 106 | LPDWORD lpdwReturned); |
| 107 | WINBOOL (WINAPI *fpAddPrinterDriver)(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo); |
| 108 | WINBOOL (WINAPI *fpEnumPrinterDrivers)(LPWSTR pName, LPWSTR pEnvironment, |
| 109 | DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, |
| 110 | LPDWORD pcbNeeded, LPDWORD pcbReturned); |
| 111 | WINBOOL (WINAPI *fpGetPrinterDriver)(HANDLE hPrinter, LPWSTR pEnvironment, |
| 112 | DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, |
| 113 | LPDWORD pcbNeeded); |
| 114 | WINBOOL (WINAPI *fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment, |
| 115 | DWORD Level, LPBYTE pDriverDirectory, |
| 116 | DWORD cbBuf, LPDWORD pcbNeeded); |
| 117 | WINBOOL (WINAPI *fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment, |
| 118 | LPWSTR pDriverName); |
| 119 | WINBOOL (WINAPI *fpAddPrintProcessor)(LPWSTR pName, LPWSTR pEnvironment, |
| 120 | LPWSTR pPathName, LPWSTR pPrintProcessorName); |
| 121 | WINBOOL (WINAPI *fpEnumPrintProcessors)(LPWSTR pName, LPWSTR pEnvironment, |
| 122 | DWORD Level, LPBYTE pPrintProcessorInfo, |
| 123 | DWORD cbBuf, LPDWORD pcbNeeded, |
| 124 | LPDWORD pcbReturned); |
| 125 | WINBOOL (WINAPI *fpGetPrintProcessorDirectory)(LPWSTR pName, LPWSTR pEnvironment, |
| 126 | DWORD Level, LPBYTE pPrintProcessorInfo, |
| 127 | DWORD cbBuf, LPDWORD pcbNeeded); |
| 128 | WINBOOL (WINAPI *fpDeletePrintProcessor)(LPWSTR pName, LPWSTR pEnvironment, |
| 129 | LPWSTR pPrintProcessorName); |
| 130 | WINBOOL (WINAPI *fpEnumPrintProcessorDatatypes)(LPWSTR pName, |
| 131 | LPWSTR pPrintProcessorName, |
| 132 | DWORD Level, LPBYTE pDatatypes, |
| 133 | DWORD cbBuf, LPDWORD pcbNeeded, |
| 134 | LPDWORD pcbReturned); |
| 135 | DWORD (WINAPI *fpStartDocPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo); |
| 136 | WINBOOL (WINAPI *fpStartPagePrinter)(HANDLE hPrinter); |
| 137 | WINBOOL (WINAPI *fpWritePrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, |
| 138 | LPDWORD pcWritten); |
| 139 | WINBOOL (WINAPI *fpEndPagePrinter)(HANDLE hPrinter); |
| 140 | WINBOOL (WINAPI *fpAbortPrinter)(HANDLE hPrinter); |
| 141 | WINBOOL (WINAPI *fpReadPrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, |
| 142 | LPDWORD pNoBytesRead); |
| 143 | WINBOOL (WINAPI *fpEndDocPrinter)(HANDLE hPrinter); |
| 144 | WINBOOL (WINAPI *fpAddJob)(HANDLE hPrinter, DWORD Level, LPBYTE pData, |
| 145 | DWORD cbBuf, LPDWORD pcbNeeded); |
| 146 | WINBOOL (WINAPI *fpScheduleJob)(HANDLE hPrinter, DWORD JobID); |
| 147 | DWORD (WINAPI *fpGetPrinterData)(HANDLE hPrinter, LPWSTR pValueName, |
| 148 | LPDWORD pType, LPBYTE pData, DWORD nSize, |
| 149 | LPDWORD pcbNeeded); |
| 150 | DWORD (WINAPI *fpSetPrinterData)(HANDLE hPrinter, LPWSTR pValueName, |
| 151 | DWORD Type, LPBYTE pData, DWORD cbData); |
| 152 | DWORD (WINAPI *fpWaitForPrinterChange)(HANDLE hPrinter, DWORD Flags); |
| 153 | WINBOOL (WINAPI *fpClosePrinter)(HANDLE phPrinter); |
| 154 | WINBOOL (WINAPI *fpAddForm)(HANDLE hPrinter, DWORD Level, LPBYTE pForm); |
| 155 | WINBOOL (WINAPI *fpDeleteForm)(HANDLE hPrinter, LPWSTR pFormName); |
| 156 | WINBOOL (WINAPI *fpGetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level, |
| 157 | LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded); |
| 158 | WINBOOL (WINAPI *fpSetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level, |
| 159 | LPBYTE pForm); |
| 160 | WINBOOL (WINAPI *fpEnumForms)(HANDLE hPrinter, DWORD Level, LPBYTE pForm, |
| 161 | DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); |
| 162 | WINBOOL (WINAPI *fpEnumMonitors)(LPWSTR pName, DWORD Level, LPBYTE pMonitors, |
| 163 | DWORD cbBuf, LPDWORD pcbNeeded, |
| 164 | LPDWORD pcReturned); |
| 165 | WINBOOL (WINAPI *fpEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts, |
| 166 | DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); |
| 167 | WINBOOL (WINAPI *fpAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName); |
| 168 | WINBOOL (WINAPI *fpConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); |
| 169 | WINBOOL (WINAPI *fpDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); |
| 170 | HANDLE (WINAPI *fpCreatePrinterIC)(HANDLE hPrinter, LPDEVMODEW pDevMode); |
| 171 | WINBOOL (WINAPI *fpPlayGdiScriptOnPrinterIC)(HANDLE hPrinterIC, LPBYTE pIn, |
| 172 | DWORD cIn, LPBYTE pOut, DWORD cOut, |
| 173 | DWORD ul); |
| 174 | WINBOOL (WINAPI *fpDeletePrinterIC)(HANDLE hPrinterIC); |
| 175 | WINBOOL (WINAPI *fpAddPrinterConnection)(LPWSTR pName); |
| 176 | WINBOOL (WINAPI *fpDeletePrinterConnection)(LPWSTR pName); |
| 177 | DWORD (WINAPI *fpPrinterMessageBox)(HANDLE hPrinter, DWORD Error, HWND hWnd, |
| 178 | LPWSTR pText, LPWSTR pCaption, |
| 179 | DWORD dwType); |
| 180 | WINBOOL (WINAPI *fpAddMonitor)(LPWSTR pName, DWORD Level, LPBYTE pMonitors); |
| 181 | WINBOOL (WINAPI *fpDeleteMonitor)(LPWSTR pName, LPWSTR pEnvironment, |
| 182 | LPWSTR pMonitorName); |
| 183 | WINBOOL (WINAPI *fpResetPrinter)(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault); |
| 184 | WINBOOL (WINAPI *fpGetPrinterDriverEx)(HANDLE hPrinter, LPWSTR pEnvironment, |
| 185 | DWORD Level, LPBYTE pDriverInfo, |
| 186 | DWORD cbBuf, LPDWORD pcbNeeded, |
| 187 | DWORD dwClientMajorVersion, |
| 188 | DWORD dwClientMinorVersion, |
| 189 | PDWORD pdwServerMajorVersion, |
| 190 | PDWORD pdwServerMinorVersion); |
| 191 | HANDLE (WINAPI *fpFindFirstPrinterChangeNotification)(HANDLE hPrinter, |
| 192 | DWORD fdwFlags, |
| 193 | DWORD fdwOptions, |
| 194 | LPVOID pPrinterNotifyOptions); |
| 195 | WINBOOL (WINAPI *fpFindClosePrinterChangeNotification)(HANDLE hChange); |
| 196 | WINBOOL (WINAPI *fpAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer, |
| 197 | LPWSTR lpMonitorName); |
| 198 | WINBOOL (WINAPI *fpShutDown)(LPVOID pvReserved); |
| 199 | WINBOOL (WINAPI *fpRefreshPrinterChangeNotification)(HANDLE hPrinter, |
| 200 | DWORD Reserved, |
| 201 | PVOID pvReserved, |
| 202 | PVOID pPrinterNotifyInfo); |
| 203 | WINBOOL (WINAPI *fpOpenPrinterEx)(LPWSTR pPrinterName, LPHANDLE phPrinter, |
| 204 | LPPRINTER_DEFAULTSW pDefault, LPBYTE pClientInfo, |
| 205 | DWORD Level); |
| 206 | HANDLE (WINAPI *fpAddPrinterEx)(LPWSTR pName, DWORD Level, LPBYTE pPrinter, |
| 207 | LPBYTE pClientInfo, DWORD ClientInfoLevel); |
| 208 | WINBOOL (WINAPI *fpSetPort)(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel, |
| 209 | LPBYTE pPortInfo); |
| 210 | DWORD (WINAPI *fpEnumPrinterData)(HANDLE hPrinter, DWORD dwIndex, |
| 211 | LPWSTR pValueName, DWORD cbValueName, |
| 212 | LPDWORD pcbValueName, LPDWORD pType, |
| 213 | LPBYTE pData, DWORD cbData, LPDWORD pcbData); |
| 214 | DWORD (WINAPI *fpDeletePrinterData)(HANDLE hPrinter, LPWSTR pValueName); |
| 215 | DWORD (WINAPI *fpClusterSplOpen)(LPCWSTR pszServer, LPCWSTR pszResource, |
| 216 | PHANDLE phSpooler, LPCWSTR pszName, |
| 217 | LPCWSTR pszAddress); |
| 218 | DWORD (WINAPI *fpClusterSplClose)(HANDLE hSpooler); |
| 219 | DWORD (WINAPI *fpClusterSplIsAlive)(HANDLE hSpooler); |
| 220 | DWORD (WINAPI *fpSetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, |
| 221 | LPCWSTR pValueName, DWORD Type, |
| 222 | LPBYTE pData, DWORD cbData); |
| 223 | DWORD (WINAPI *fpGetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, |
| 224 | LPCWSTR pValueName, LPDWORD pType, |
| 225 | LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded); |
| 226 | DWORD (WINAPI *fpEnumPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, |
| 227 | LPBYTE pEnumValues, DWORD cbEnumValues, |
| 228 | LPDWORD pcbEnumValues, LPDWORD pnEnumValues); |
| 229 | DWORD (WINAPI *fpEnumPrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName, |
| 230 | LPWSTR pSubkey, DWORD cbSubkey, LPDWORD pcbSubkey); |
| 231 | DWORD (WINAPI *fpDeletePrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, |
| 232 | LPCWSTR pValueName); |
| 233 | DWORD (WINAPI *fpDeletePrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName); |
| 234 | WINBOOL (WINAPI *fpSeekPrinter)(HANDLE hPrinter, LARGE_INTEGER liDistanceToMove, |
| 235 | PLARGE_INTEGER pliNewPointer, DWORD dwMoveMethod, |
| 236 | WINBOOL bWrite); |
| 237 | WINBOOL (WINAPI *fpDeletePrinterDriverEx)(LPWSTR pName, LPWSTR pEnvironment, |
| 238 | LPWSTR pDriverName, DWORD dwDeleteFlag, |
| 239 | DWORD dwVersionNum); |
| 240 | WINBOOL (WINAPI *fpAddPerMachineConnection)(LPCWSTR pServer, |
| 241 | LPCWSTR pPrinterName, LPCWSTR pPrintServer, |
| 242 | LPCWSTR pProvider); |
| 243 | WINBOOL (WINAPI *fpDeletePerMachineConnection)(LPCWSTR pServer, |
| 244 | LPCWSTR pPrinterName); |
| 245 | WINBOOL (WINAPI *fpEnumPerMachineConnections)(LPCWSTR pServer, |
| 246 | LPBYTE pPrinterEnum, DWORD cbBuf, |
| 247 | LPDWORD pcbNeeded, |
| 248 | LPDWORD pcReturned); |
| 249 | WINBOOL (WINAPI *fpXcvData)(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData, |
| 250 | DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData, |
| 251 | PDWORD pcbOutputNeeded, PDWORD pdwStatus); |
| 252 | WINBOOL (WINAPI *fpAddPrinterDriverEx)(LPWSTR pName, DWORD Level, |
| 253 | LPBYTE pDriverInfo, DWORD dwFileCopyFlags); |
| 254 | WINBOOL (WINAPI *fpSplReadPrinter)(HANDLE hPrinter, LPBYTE *pBuf, DWORD cbBuf); |
| 255 | WINBOOL (WINAPI *fpDriverUnloadComplete)(LPWSTR pDriverFile); |
| 256 | WINBOOL (WINAPI *fpGetSpoolFileInfo)(HANDLE hPrinter, LPWSTR *pSpoolDir, |
| 257 | LPHANDLE phFile, HANDLE hSpoolerProcess, |
| 258 | HANDLE hAppProcess); |
| 259 | WINBOOL (WINAPI *fpCommitSpoolData)(HANDLE hPrinter, DWORD cbCommit); |
| 260 | WINBOOL (WINAPI *fpCloseSpoolFileHandle)(HANDLE hPrinter); |
| 261 | WINBOOL (WINAPI *fpFlushPrinter)(HANDLE hPrinter, LPBYTE pBuf, DWORD cbBuf, |
| 262 | LPDWORD pcWritten, DWORD cSleep); |
| 263 | DWORD (WINAPI *fpSendRecvBidiData)(HANDLE hPort, LPCWSTR pAction, |
| 264 | LPBIDI_REQUEST_CONTAINER pReqData, |
| 265 | LPBIDI_RESPONSE_CONTAINER *ppResData); |
| 266 | WINBOOL (WINAPI *fpAddDriverCatalog)(HANDLE hPrinter, DWORD dwLevel, |
| 267 | VOID *pvDriverInfCatInfo, DWORD dwCatalogCopyFlags); |
| 268 | } PRINTPROVIDOR, *LPPRINTPROVIDOR; |
| 269 | |
| 270 | typedef struct _PRINTPROCESSOROPENDATA { |
| 271 | PDEVMODEW pDevMode; |
| 272 | LPWSTR pDatatype; |
| 273 | LPWSTR pParameters; |
| 274 | LPWSTR pDocumentName; |
| 275 | DWORD JobId; |
| 276 | LPWSTR pOutputFile; |
| 277 | LPWSTR pPrinterName; |
| 278 | } PRINTPROCESSOROPENDATA, *LPPRINTPROCESSOROPENDATA, *PPRINTPROCESSOROPENDATA; |
| 279 | |
| 280 | typedef struct _MONITORREG { |
| 281 | DWORD cbSize; |
| 282 | LONG (WINAPI *fpCreateKey)(HANDLE hcKey, LPCWSTR pszSubKey, DWORD dwOptions, |
| 283 | REGSAM samDesired, |
| 284 | PSECURITY_ATTRIBUTES pSecurityAttributes, |
| 285 | PHANDLE phckResult, PDWORD pdwDisposition, |
| 286 | HANDLE hSpooler); |
| 287 | LONG (WINAPI *fpOpenKey)(HANDLE hcKey, LPCWSTR pszSubKey, REGSAM samDesired, |
| 288 | PHANDLE phkResult, HANDLE hSpooler); |
| 289 | LONG (WINAPI *fpCloseKey)(HANDLE hcKey, HANDLE hSpooler); |
| 290 | LONG (WINAPI *fpDeleteKey)(HANDLE hcKey, LPCWSTR pszSubKey, HANDLE hSpooler); |
| 291 | LONG (WINAPI *fpEnumKey)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszName, |
| 292 | PDWORD pcchName, PFILETIME pftLastWriteTime, |
| 293 | HANDLE hSpooler); |
| 294 | LONG (WINAPI *fpQueryInfoKey)(HANDLE hcKey, PDWORD pcSubKeys, PDWORD pcbKey, |
| 295 | PDWORD pcValues, PDWORD pcbValue, PDWORD pcbData, |
| 296 | PDWORD pcbSecurityDescriptor, |
| 297 | PFILETIME pftLastWriteTime, |
| 298 | HANDLE hSpooler); |
| 299 | LONG (WINAPI *fpSetValue)(HANDLE hcKey, LPCWSTR pszValue, DWORD dwType, |
| 300 | const BYTE* pData, DWORD cbData, HANDLE hSpooler); |
| 301 | LONG (WINAPI *fpDeleteValue)(HANDLE hcKey, LPCWSTR pszValue, HANDLE hSpooler); |
| 302 | LONG (WINAPI *fpEnumValue)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszValue, |
| 303 | PDWORD pcbValue, PDWORD pType, PBYTE pData, PDWORD pcbData, |
| 304 | HANDLE hSpooler); |
| 305 | LONG (WINAPI *fpQueryValue)(HANDLE hcKey, LPCWSTR pszValue, PDWORD pType, |
| 306 | PBYTE pData, PDWORD pcbData, HANDLE hSpooler); |
| 307 | } MONITORREG, *PMONITORREG; |
| 308 | |
| 309 | typedef struct _MONITORINIT { |
| 310 | DWORD cbSize; |
| 311 | HANDLE hSpooler; |
| 312 | HKEYMONITOR hckRegistryRoot; |
| 313 | PMONITORREG pMonitorReg; |
| 314 | WINBOOL bLocal; |
| 315 | LPCWSTR pszServerName; |
| 316 | } MONITORINIT, *PMONITORINIT; |
| 317 | |
| 318 | typedef struct _MONITOR { |
| 319 | WINBOOL (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts, |
| 320 | DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); |
| 321 | WINBOOL (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle); |
| 322 | WINBOOL (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName, |
| 323 | PHANDLE pHandle, struct _MONITOR *pMonitor); |
| 324 | WINBOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName, |
| 325 | DWORD JobId, DWORD Level, LPBYTE pDocInfo); |
| 326 | WINBOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf, |
| 327 | LPDWORD pcbWritten); |
| 328 | WINBOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer, |
| 329 | LPDWORD pcbRead); |
| 330 | WINBOOL (WINAPI *pfnEndDocPort)(HANDLE hPort); |
| 331 | WINBOOL (WINAPI *pfnClosePort)(HANDLE hPort); |
| 332 | WINBOOL (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName); |
| 333 | WINBOOL (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer, |
| 334 | LPWSTR lpMonitorName); |
| 335 | WINBOOL (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); |
| 336 | WINBOOL (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); |
| 337 | WINBOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID, |
| 338 | LPWSTR pValueName, LPWSTR lpInBuffer, |
| 339 | DWORD cbInBuffer, LPWSTR lpOutBuffer, |
| 340 | DWORD cbOutBuffer, LPDWORD lpcbReturned); |
| 341 | WINBOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO, |
| 342 | DWORD reserved); |
| 343 | WINBOOL (WINAPI *pfnXcvOpenPort)(LPCWSTR pszObject, ACCESS_MASK GrantedAccess, PHANDLE phXcv); |
| 344 | DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName, |
| 345 | PBYTE pInputData, DWORD cbInputData, |
| 346 | PBYTE pOutputData, DWORD cbOutputData, |
| 347 | PDWORD pcbOutputNeeded); |
| 348 | WINBOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv); |
| 349 | } MONITOR, *LPMONITOR; |
| 350 | |
| 351 | typedef struct _MONITOREX { |
| 352 | DWORD dwMonitorSize; |
| 353 | MONITOR Monitor; |
| 354 | } MONITOREX, *LPMONITOREX; |
| 355 | |
| 356 | typedef struct _MONITOR2 { |
| 357 | DWORD cbSize; |
| 358 | WINBOOL (WINAPI *pfnEnumPorts)(HANDLE hMonitor, LPWSTR pName, DWORD Level, LPBYTE pPorts, |
| 359 | DWORD cbBuf, LPDWORD pcbNeeded, |
| 360 | LPDWORD pcReturned); |
| 361 | WINBOOL (WINAPI *pfnOpenPort)(HANDLE hMonitor, LPWSTR pName, PHANDLE pHandle); |
| 362 | WINBOOL (WINAPI *pfnOpenPortEx)(HANDLE hMonitor, HANDLE hMonitorPort, LPWSTR pPortName, LPWSTR pPrinterName, |
| 363 | PHANDLE pHandle, struct _MONITOR2 *pMonitor2); |
| 364 | WINBOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName, |
| 365 | DWORD JobId, DWORD Level, LPBYTE pDocInfo); |
| 366 | WINBOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf, |
| 367 | LPDWORD pcbWritten); |
| 368 | WINBOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer, |
| 369 | LPDWORD pcbRead); |
| 370 | WINBOOL (WINAPI *pfnEndDocPort)(HANDLE hPort); |
| 371 | WINBOOL (WINAPI *pfnClosePort)(HANDLE hPort); |
| 372 | WINBOOL (WINAPI *pfnAddPort)(HANDLE hMonitor, LPWSTR pName, HWND hWnd, LPWSTR pMonitorName); |
| 373 | WINBOOL (WINAPI *pfnAddPortEx)(HANDLE hMonitor, LPWSTR pName, DWORD Level, LPBYTE lpBuffer, |
| 374 | LPWSTR lpMonitorName); |
| 375 | WINBOOL (WINAPI *pfnConfigurePort)(HANDLE hMonitor, LPWSTR pName, HWND hWnd, LPWSTR pPortName); |
| 376 | WINBOOL (WINAPI *pfnDeletePort)(HANDLE hMonitor, LPWSTR pName, HWND hWnd, LPWSTR pPortName); |
| 377 | WINBOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID, |
| 378 | LPWSTR pValueName, LPWSTR lpInBuffer, |
| 379 | DWORD cbInBuffer, LPWSTR lpOutBuffer, |
| 380 | DWORD cbOutBuffer, LPDWORD lpcbReturned); |
| 381 | WINBOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO, |
| 382 | DWORD reserved); |
| 383 | WINBOOL (WINAPI *pfnXcvOpenPort)(HANDLE hMonitor, LPCWSTR pszObject, |
| 384 | ACCESS_MASK GrantedAccess, PHANDLE phXcv); |
| 385 | DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName, |
| 386 | PBYTE pInputData, DWORD cbInputData, |
| 387 | PBYTE pOutputData, DWORD cbOutputData, |
| 388 | PDWORD pcbOutputNeeded); |
| 389 | WINBOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv); |
| 390 | VOID (WINAPI *pfnShutdown)(HANDLE hMonitor); |
| 391 | #if (NTDDI_VERSION >= NTDDI_WINXP) |
| 392 | DWORD (WINAPI *pfnSendRecvBidiDataFromPort)(HANDLE hPort, DWORD dwAccessBit, |
| 393 | LPCWSTR pAction, |
| 394 | PBIDI_REQUEST_CONTAINER pReqData, |
| 395 | PBIDI_RESPONSE_CONTAINER *ppResData); |
| 396 | #endif |
| 397 | #if (NTDDI_VERSION >= NTDDI_WIN7) |
| 398 | DWORD (WINAPI *pfnNotifyUsedPorts)(HANDLE hMonitor, DWORD cPorts, |
| 399 | PCWSTR *ppszPorts); |
| 400 | |
| 401 | DWORD (WINAPI *pfnNotifyUnusedPorts)(HANDLE hMonitor, DWORD cPorts, |
| 402 | PCWSTR *ppszPorts); |
| 403 | #endif |
| 404 | } MONITOR2, *LPMONITOR2, *PMONITOR2; |
| 405 | |
| 406 | typedef struct _MONITORUI { |
| 407 | DWORD dwMonitorUISize; |
| 408 | WINBOOL (WINAPI *pfnAddPortUI)(PCWSTR pszServer, HWND hWnd, |
| 409 | PCWSTR pszPortNameIn, PWSTR *ppszPortNameOut); |
| 410 | WINBOOL (WINAPI *pfnConfigurePortUI)(PCWSTR pName, HWND hWnd, PCWSTR pPortName); |
| 411 | WINBOOL (WINAPI *pfnDeletePortUI)(PCWSTR pszServer, HWND hWnd, PCWSTR pszPortName); |
| 412 | } MONITORUI, *PMONITORUI; |
| 413 | |
| 414 | #if (NTDDI_VERSION >= NTDDI_WINXP) |
| 415 | |
| 416 | typedef enum { |
| 417 | kMessageBox = 0 |
| 418 | } UI_TYPE; |
| 419 | |
| 420 | typedef struct { |
| 421 | DWORD cbSize; |
| 422 | LPWSTR pTitle; |
| 423 | LPWSTR pMessage; |
| 424 | DWORD Style; |
| 425 | DWORD dwTimeout; |
| 426 | WINBOOL bWait; |
| 427 | } MESSAGEBOX_PARAMS, *PMESSAGEBOX_PARAMS; |
| 428 | |
| 429 | typedef struct { |
| 430 | UI_TYPE UIType; |
| 431 | MESSAGEBOX_PARAMS MessageBoxParams; |
| 432 | } SHOWUIPARAMS, *PSHOWUIPARAMS; |
| 433 | |
| 434 | #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ |
| 435 | |
| 436 | #if (NTDDI_VERSION >= NTDDI_WS03) |
| 437 | #ifndef __ATTRIBUTE_INFO_3__ |
| 438 | #define __ATTRIBUTE_INFO_3__ |
| 439 | typedef struct _ATTRIBUTE_INFO_3 { |
| 440 | DWORD dwJobNumberOfPagesPerSide; |
| 441 | DWORD dwDrvNumberOfPagesPerSide; |
| 442 | DWORD dwNupBorderFlags; |
| 443 | DWORD dwJobPageOrderFlags; |
| 444 | DWORD dwDrvPageOrderFlags; |
| 445 | DWORD dwJobNumberOfCopies; |
| 446 | DWORD dwDrvNumberOfCopies; |
| 447 | DWORD dwColorOptimization; |
| 448 | short dmPrintQuality; |
| 449 | short dmYResolution; |
| 450 | } ATTRIBUTE_INFO_3, *PATTRIBUTE_INFO_3; |
| 451 | #endif /* __ATTRIBUTE_INFO_3__ */ |
| 452 | #endif /* (NTDDI_VERSION >= NTDDI_WS03) */ |
| 453 | |
| 454 | #if (NTDDI_VERSION >= NTDDI_VISTA) |
| 455 | |
| 456 | typedef WINBOOL |
| 457 | (CALLBACK *ROUTER_NOTIFY_CALLBACK)( |
| 458 | DWORD dwCommand, |
| 459 | PVOID pContext, |
| 460 | DWORD dwColor, |
| 461 | PPRINTER_NOTIFY_INFO pNofityInfo, |
| 462 | DWORD fdwFlags, |
| 463 | PDWORD pdwResult); |
| 464 | |
| 465 | typedef enum _NOTIFICATION_CALLBACK_COMMANDS { |
| 466 | NOTIFICATION_COMMAND_NOTIFY, |
| 467 | NOTIFICATION_COMMAND_CONTEXT_ACQUIRE, |
| 468 | NOTIFICATION_COMMAND_CONTEXT_RELEASE |
| 469 | } NOTIFICATION_CALLBACK_COMMANDS; |
| 470 | |
| 471 | typedef struct _NOTIFICATION_CONFIG_1 { |
| 472 | UINT cbSize; |
| 473 | DWORD fdwFlags; |
| 474 | ROUTER_NOTIFY_CALLBACK pfnNotifyCallback; |
| 475 | PVOID pContext; |
| 476 | } NOTIFICATION_CONFIG_1, *PNOTIFICATION_CONFIG_1; |
| 477 | |
| 478 | typedef enum _NOTIFICATION_CONFIG_FLAGS { |
| 479 | NOTIFICATION_CONFIG_CREATE_EVENT = 1 << 0, |
| 480 | NOTIFICATION_CONFIG_REGISTER_CALLBACK = 1 << 1, |
| 481 | NOTIFICATION_CONFIG_EVENT_TRIGGER = 1 << 2, |
| 482 | NOTIFICATION_CONFIG_ASYNC_CHANNEL = 1 << 3 |
| 483 | } NOTIFICATION_CONFIG_FLAGS; |
| 484 | |
| 485 | typedef struct _SPLCLIENT_INFO_3 { |
| 486 | UINT cbSize; |
| 487 | DWORD dwFlags; |
| 488 | DWORD dwSize; |
| 489 | PWSTR pMachineName; |
| 490 | PWSTR pUserName; |
| 491 | DWORD dwBuildNum; |
| 492 | DWORD dwMajorVersion; |
| 493 | DWORD dwMinorVersion; |
| 494 | WORD wProcessorArchitecture; |
| 495 | UINT64 hSplPrinter; |
| 496 | } SPLCLIENT_INFO_3, *PSPLCLIENT_INFO_3, *LPSPLCLIENT_INFO_3; |
| 497 | |
| 498 | #ifndef __ATTRIBUTE_INFO_4__ |
| 499 | #define __ATTRIBUTE_INFO_4__ |
| 500 | |
| 501 | typedef struct _ATTRIBUTE_INFO_4 { |
| 502 | DWORD dwJobNumberOfPagesPerSide; |
| 503 | DWORD dwDrvNumberOfPagesPerSide; |
| 504 | DWORD dwNupBorderFlags; |
| 505 | DWORD dwJobPageOrderFlags; |
| 506 | DWORD dwDrvPageOrderFlags; |
| 507 | DWORD dwJobNumberOfCopies; |
| 508 | DWORD dwDrvNumberOfCopies; |
| 509 | DWORD dwColorOptimization; |
| 510 | short dmPrintQuality; |
| 511 | short dmYResolution; |
| 512 | DWORD dwDuplexFlags; |
| 513 | DWORD dwNupDirection; |
| 514 | DWORD dwBookletFlags; |
| 515 | DWORD dwScalingPercentX; |
| 516 | DWORD dwScalingPercentY; |
| 517 | } ATTRIBUTE_INFO_4, *PATTRIBUTE_INFO_4; |
| 518 | |
| 519 | #define REVERSE_PAGES_FOR_REVERSE_DUPLEX (0x00000001) |
| 520 | #define DONT_SEND_EXTRA_PAGES_FOR_DUPLEX (0x00000001 << 1) |
| 521 | |
| 522 | #define RIGHT_THEN_DOWN (0x00000001) |
| 523 | #define DOWN_THEN_RIGHT (0x00000001 << 1) |
| 524 | #define LEFT_THEN_DOWN (0x00000001 << 2) |
| 525 | #define DOWN_THEN_LEFT (0x00000001 << 3) |
| 526 | |
| 527 | #define BOOKLET_EDGE_LEFT 0x00000000 |
| 528 | #define BOOKLET_EDGE_RIGHT 0x00000001 |
| 529 | |
| 530 | #endif /* __ATTRIBUTE_INFO_4__ */ |
| 531 | |
| 532 | #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ |
| 533 | |
| 534 | #if (OSVER(NTDDI_VERSION) == NTDDI_W2K) |
| 535 | typedef SPLCLIENT_INFO_2_W2K SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2; |
| 536 | #elif ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) || (OSVER(NTDDI_VERSION) == NTDDI_WS03)) |
| 537 | typedef SPLCLIENT_INFO_2_WINXP SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2; |
| 538 | #else |
| 539 | typedef SPLCLIENT_INFO_2_LONGHORN SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2; |
| 540 | #endif /* (OSVER(NTDDI_VERSION) == NTDDI_W2K) */ |
| 541 | |
| 542 | WINBOOL |
| 543 | WINAPI |
| 544 | InitializePrintProvidor( |
| 545 | LPPRINTPROVIDOR pPrintProvidor, |
| 546 | DWORD cbPrintProvidor, |
| 547 | LPWSTR pFullRegistryPath); |
| 548 | |
| 549 | HANDLE |
| 550 | WINAPI |
| 551 | OpenPrintProcessor( |
| 552 | LPWSTR pPrinterName, |
| 553 | PPRINTPROCESSOROPENDATA pPrintProcessorOpenData); |
| 554 | |
| 555 | WINBOOL |
| 556 | WINAPI |
| 557 | PrintDocumentOnPrintProcessor( |
| 558 | HANDLE hPrintProcessor, |
| 559 | LPWSTR pDocumentName); |
| 560 | |
| 561 | WINBOOL |
| 562 | WINAPI |
| 563 | ClosePrintProcessor( |
| 564 | HANDLE hPrintProcessor); |
| 565 | |
| 566 | WINBOOL |
| 567 | WINAPI |
| 568 | ControlPrintProcessor( |
| 569 | HANDLE hPrintProcessor, |
| 570 | DWORD Command); |
| 571 | |
| 572 | DWORD |
| 573 | WINAPI |
| 574 | GetPrintProcessorCapabilities( |
| 575 | LPTSTR pValueName, |
| 576 | DWORD dwAttributes, |
| 577 | LPBYTE pData, |
| 578 | DWORD nSize, |
| 579 | LPDWORD pcbNeeded); |
| 580 | |
| 581 | WINBOOL |
| 582 | WINAPI |
| 583 | InitializeMonitor( |
| 584 | LPWSTR pRegistryRoot); |
| 585 | |
| 586 | WINBOOL |
| 587 | WINAPI |
| 588 | OpenPort( |
| 589 | LPWSTR pName, |
| 590 | PHANDLE pHandle); |
| 591 | |
| 592 | WINBOOL |
| 593 | WINAPI |
| 594 | WritePort( |
| 595 | HANDLE hPort, |
| 596 | LPBYTE pBuffer, |
| 597 | DWORD cbBuf, |
| 598 | LPDWORD pcbWritten); |
| 599 | |
| 600 | WINBOOL |
| 601 | WINAPI |
| 602 | ReadPort( |
| 603 | HANDLE hPort, |
| 604 | LPBYTE pBuffer, |
| 605 | DWORD cbBuffer, |
| 606 | LPDWORD pcbRead); |
| 607 | |
| 608 | WINBOOL |
| 609 | WINAPI |
| 610 | ClosePort( |
| 611 | HANDLE hPort); |
| 612 | |
| 613 | WINBOOL |
| 614 | WINAPI |
| 615 | XcvOpenPort( |
| 616 | LPCWSTR pszObject, |
| 617 | ACCESS_MASK GrantedAccess, |
| 618 | PHANDLE phXcv); |
| 619 | |
| 620 | DWORD |
| 621 | WINAPI |
| 622 | XcvDataPort( |
| 623 | HANDLE hXcv, |
| 624 | LPCWSTR pszDataName, |
| 625 | PBYTE pInputData, |
| 626 | DWORD cbInputData, |
| 627 | PBYTE pOutputData, |
| 628 | DWORD cbOutputData, |
| 629 | PDWORD pcbOutputNeeded); |
| 630 | |
| 631 | WINBOOL |
| 632 | WINAPI |
| 633 | XcvClosePort( |
| 634 | HANDLE hXcv); |
| 635 | |
| 636 | WINBOOL |
| 637 | WINAPI |
| 638 | AddPortUI( |
| 639 | PCWSTR pszServer, |
| 640 | HWND hWnd, |
| 641 | PCWSTR pszMonitorNameIn, |
| 642 | PWSTR *ppszPortNameOut); |
| 643 | |
| 644 | WINBOOL |
| 645 | WINAPI |
| 646 | ConfigurePortUI( |
| 647 | PCWSTR pszServer, |
| 648 | HWND hWnd, |
| 649 | PCWSTR pszPortName); |
| 650 | |
| 651 | WINBOOL |
| 652 | WINAPI |
| 653 | DeletePortUI( |
| 654 | PCWSTR pszServer, |
| 655 | HWND hWnd, |
| 656 | PCWSTR pszPortName); |
| 657 | |
| 658 | WINBOOL |
| 659 | WINAPI |
| 660 | SplDeleteSpoolerPortStart( |
| 661 | PCWSTR pPortName); |
| 662 | |
| 663 | WINBOOL |
| 664 | WINAPI |
| 665 | SplDeleteSpoolerPortEnd( |
| 666 | PCWSTR pName, |
| 667 | WINBOOL bDeletePort); |
| 668 | |
| 669 | WINBOOL |
| 670 | WINAPI |
| 671 | SpoolerCopyFileEvent( |
| 672 | LPWSTR pszPrinterName, |
| 673 | LPWSTR pszKey, |
| 674 | DWORD dwCopyFileEvent); |
| 675 | |
| 676 | DWORD |
| 677 | WINAPI |
| 678 | GenerateCopyFilePaths( |
| 679 | LPCWSTR pszPrinterName, |
| 680 | LPCWSTR pszDirectory, |
| 681 | LPBYTE pSplClientInfo, |
| 682 | DWORD dwLevel, |
| 683 | LPWSTR pszSourceDir, |
| 684 | LPDWORD pcchSourceDirSize, |
| 685 | LPWSTR pszTargetDir, |
| 686 | LPDWORD pcchTargetDirSize, |
| 687 | DWORD dwFlags); |
| 688 | |
| 689 | HANDLE WINAPI CreatePrinterIC(HANDLE hPrinter, LPDEVMODEW pDevMode); |
| 690 | WINBOOL WINAPI PlayGdiScriptOnPrinterIC(HANDLE hPrinterIC, LPBYTE pIn, |
| 691 | DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul); |
| 692 | WINBOOL WINAPI DeletePrinterIC(HANDLE hPrinterIC); |
| 693 | WINBOOL WINAPI DevQueryPrint(HANDLE hPrinter, LPDEVMODEW pDevMode, DWORD *pResID); |
| 694 | HANDLE WINAPI RevertToPrinterSelf(VOID); |
| 695 | WINBOOL WINAPI ImpersonatePrinterClient(HANDLE hToken); |
| 696 | WINBOOL WINAPI ReplyPrinterChangeNotification(HANDLE hNotify, DWORD fdwFlags, |
| 697 | PDWORD pdwResult, PVOID pPrinterNotifyInfo); |
| 698 | WINBOOL WINAPI ReplyPrinterChangeNotificationEx(HANDLE hNotify, DWORD dwColor, |
| 699 | DWORD fdwFlags, PDWORD pdwResult, |
| 700 | PVOID pPrinterNotifyInfo); |
| 701 | WINBOOL WINAPI PartialReplyPrinterChangeNotification(HANDLE hNotify, |
| 702 | PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc); |
| 703 | PPRINTER_NOTIFY_INFO WINAPI RouterAllocPrinterNotifyInfo(DWORD cPrinterNotifyInfoData); |
| 704 | WINBOOL WINAPI RouterFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo); |
| 705 | |
| 706 | WINBOOL WINAPI AppendPrinterNotifyInfoData(PPRINTER_NOTIFY_INFO pInfoDest, |
| 707 | PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc, |
| 708 | DWORD fdwFlags); |
| 709 | DWORD WINAPI CallRouterFindFirstPrinterChangeNotification(HANDLE hPrinter, |
| 710 | DWORD fdwFlags, |
| 711 | DWORD fdwOptions, |
| 712 | HANDLE hNotify, |
| 713 | PPRINTER_NOTIFY_OPTIONS pPrinterNotifyOptions); |
| 714 | WINBOOL WINAPI ProvidorFindFirstPrinterChangeNotification(HANDLE hPrinter, |
| 715 | DWORD fdwFlags, |
| 716 | DWORD fdwOptions, |
| 717 | HANDLE hNotify, |
| 718 | PVOID pvReserved0, |
| 719 | PVOID pvReserved1); |
| 720 | WINBOOL WINAPI ProvidorFindClosePrinterChangeNotification(HANDLE hPrinter); |
| 721 | |
| 722 | /* Spooler */ |
| 723 | WINBOOL WINAPI SpoolerFindFirstPrinterChangeNotification(HANDLE hPrinter, |
| 724 | DWORD fdwFlags, |
| 725 | DWORD fdwOptions, |
| 726 | PHANDLE phEvent, |
| 727 | PVOID pPrinterNotifyOptions, |
| 728 | PVOID pvReserved); |
| 729 | WINBOOL WINAPI SpoolerFindNextPrinterChangeNotification(HANDLE hPrinter, |
| 730 | LPDWORD pfdwChange, |
| 731 | PVOID pvReserved0, |
| 732 | PVOID ppPrinterNotifyInfo); |
| 733 | VOID WINAPI SpoolerFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo); |
| 734 | WINBOOL WINAPI SpoolerFindClosePrinterChangeNotification(HANDLE hPrinter); |
| 735 | |
| 736 | /* Port monitor / Language monitor / Print monitor */ |
| 737 | LPMONITOR2 WINAPI InitializePrintMonitor2(PMONITORINIT pMonitorInit, |
| 738 | PHANDLE phMonitor); |
| 739 | PMONITORUI WINAPI InitializePrintMonitorUI(VOID); |
| 740 | LPMONITOREX WINAPI InitializePrintMonitor(LPWSTR pRegistryRoot); |
| 741 | WINBOOL WINAPI InitializeMonitorEx(LPWSTR pRegistryRoot, LPMONITOR pMonitor); |
| 742 | |
| 743 | #if (NTDDI_VERSION >= NTDDI_WINXP) |
| 744 | |
| 745 | PBIDI_RESPONSE_CONTAINER WINAPI RouterAllocBidiResponseContainer(DWORD Count); |
| 746 | PVOID WINAPI RouterAllocBidiMem(size_t NumBytes); |
| 747 | DWORD WINAPI RouterFreeBidiResponseContainer(PBIDI_RESPONSE_CONTAINER pData); |
| 748 | VOID WINAPI RouterFreeBidiMem(PVOID pMemPointer); |
| 749 | |
| 750 | WINBOOL |
| 751 | WINAPI |
| 752 | SplPromptUIInUsersSession( |
| 753 | HANDLE hPrinter, |
| 754 | DWORD JobId, |
| 755 | PSHOWUIPARAMS pUIParams, |
| 756 | DWORD *pResponse); |
| 757 | |
| 758 | DWORD |
| 759 | WINAPI |
| 760 | SplIsSessionZero( |
| 761 | HANDLE hPrinter, |
| 762 | DWORD JobId, |
| 763 | WINBOOL *pIsSessionZero); |
| 764 | |
| 765 | #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ |
| 766 | |
| 767 | #if (NTDDI_VERSION >= NTDDI_WS03) |
| 768 | WINBOOL |
| 769 | WINAPI |
| 770 | GetJobAttributes( |
| 771 | LPWSTR pPrinterName, |
| 772 | LPDEVMODEW pDevmode, |
| 773 | PATTRIBUTE_INFO_3 pAttributeInfo); |
| 774 | #endif |
| 775 | |
| 776 | #if (NTDDI_VERSION >= NTDDI_VISTA) |
| 777 | |
| 778 | #define FILL_WITH_DEFAULTS 0x1 |
| 779 | |
| 780 | WINBOOL |
| 781 | WINAPI |
| 782 | GetJobAttributesEx( |
| 783 | LPWSTR pPrinterName, |
| 784 | LPDEVMODEW pDevmode, |
| 785 | DWORD dwLevel, |
| 786 | LPBYTE pAttributeInfo, |
| 787 | DWORD nSize, |
| 788 | DWORD dwFlags); |
| 789 | |
| 790 | WINBOOL WINAPI SpoolerRefreshPrinterChangeNotification(HANDLE hPrinter, |
| 791 | DWORD dwColor, |
| 792 | PPRINTER_NOTIFY_OPTIONS pOptions, |
| 793 | PPRINTER_NOTIFY_INFO *ppInfo); |
| 794 | |
| 795 | #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ |
| 796 | |
| 797 | /* FIXME : The following declarations are not present in the official header */ |
| 798 | |
| 799 | WINBOOL WINAPI OpenPrinterToken(PHANDLE phToken); |
| 800 | WINBOOL WINAPI SetPrinterToken(HANDLE hToken); |
| 801 | WINBOOL WINAPI ClosePrinterToken(HANDLE hToken); |
| 802 | WINBOOL WINAPI InstallPrintProcessor(HWND hWnd); |
| 803 | |
| 804 | #ifdef __cplusplus |
| 805 | } |
| 806 | #endif |