| 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 |