Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenwinsplp.h
Go to the documentation of this file.
00001 /* 00002 * winsplp.h 00003 * 00004 * This file is part of the ReactOS PSDK package. 00005 * 00006 * Contributors: 00007 * Created by Amine Khaldi. 00008 * 00009 * THIS SOFTWARE IS NOT COPYRIGHTED 00010 * 00011 * This source code is offered for use in the public domain. You may 00012 * use, modify or distribute it freely. 00013 * 00014 * This code is distributed in the hope that it will be useful but 00015 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00016 * DISCLAIMED. This includes but is not limited to warranties of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00018 * 00019 */ 00020 00021 #pragma once 00022 00023 #ifdef __cplusplus 00024 extern "C" { 00025 #endif 00026 00027 #if (STRICT && (NTDDI_VERSION >= NTDDI_VISTA)) 00028 #define HKEYMONITOR HKEY 00029 #else 00030 #define HKEYMONITOR HANDLE 00031 #endif 00032 00033 #define PRINTER_NOTIFY_STATUS_ENDPOINT 1 00034 #define PRINTER_NOTIFY_STATUS_POLL 2 00035 #define PRINTER_NOTIFY_STATUS_INFO 4 00036 00037 #define ROUTER_UNKNOWN 0 00038 #define ROUTER_SUCCESS 1 00039 #define ROUTER_STOP_ROUTING 2 00040 00041 #if (NTDDI_VERSION >= NTDDI_WINXP) 00042 #define MONITOR2_SIZE_WIN2K (sizeof(DWORD) + (sizeof(PVOID)*18)) 00043 #endif 00044 00045 #define COPYFILE_EVENT_SET_PRINTER_DATAEX 1 00046 #define COPYFILE_EVENT_DELETE_PRINTER 2 00047 #define COPYFILE_EVENT_ADD_PRINTER_CONNECTION 3 00048 #define COPYFILE_EVENT_DELETE_PRINTER_CONNECTION 4 00049 #define COPYFILE_EVENT_FILES_CHANGED 5 00050 00051 #define COPYFILE_FLAG_CLIENT_SPOOLER 0x00000001 00052 #define COPYFILE_FLAG_SERVER_SPOOLER 0x00000002 00053 00054 #define PRINTER_NOTIFY_INFO_DATA_COMPACT 1 00055 00056 typedef struct _PRINTER_NOTIFY_INIT { 00057 DWORD Size; 00058 DWORD Reserved; 00059 DWORD PollTime; 00060 } PRINTER_NOTIFY_INIT, *LPPRINTER_NOTIFY_INIT, *PPRINTER_NOTIFY_INIT; 00061 00062 typedef struct _SPLCLIENT_INFO_1 { 00063 DWORD dwSize; 00064 LPWSTR pMachineName; 00065 LPWSTR pUserName; 00066 DWORD dwBuildNum; 00067 DWORD dwMajorVersion; 00068 DWORD dwMinorVersion; 00069 WORD wProcessorArchitecture; 00070 } SPLCLIENT_INFO_1, *LPSPLCLIENT_INFO_1, *PSPLCLIENT_INFO_1; 00071 00072 typedef struct _SPLCLIENT_INFO_2_V1{ 00073 ULONG_PTR hSplPrinter; 00074 } SPLCLIENT_INFO_2_W2K; 00075 00076 typedef struct _SPLCLIENT_INFO_2_V2{ 00077 #ifdef _WIN64 00078 DWORD64 hSplPrinter; 00079 #else 00080 DWORD32 hSplPrinter; 00081 #endif 00082 } SPLCLIENT_INFO_2_WINXP; 00083 00084 typedef struct _SPLCLIENT_INFO_2_V3{ 00085 UINT64 hSplPrinter; 00086 } SPLCLIENT_INFO_2_LONGHORN; 00087 00088 typedef struct _PRINTPROVIDOR { 00089 BOOL (WINAPI *fpOpenPrinter)(PWSTR lpPrinterName, HANDLE *phPrinter, 00090 PPRINTER_DEFAULTSW pDefault); 00091 BOOL (WINAPI *fpSetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level, 00092 LPBYTE pJob, DWORD Command); 00093 BOOL (WINAPI *fpGetJob)(HANDLE hPrinter, DWORD JobID, DWORD Level, 00094 LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded); 00095 BOOL (WINAPI *fpEnumJobs)(HANDLE hPrinter, DWORD FirstJob, DWORD NoJobs, 00096 DWORD Level, LPBYTE pJob, DWORD cbBuf, LPDWORD pcbNeeded, 00097 LPDWORD pcReturned); 00098 HANDLE (WINAPI *fpAddPrinter)(LPWSTR pName, DWORD Level, LPBYTE pPrinter); 00099 BOOL (WINAPI *fpDeletePrinter)(HANDLE hPrinter); 00100 BOOL (WINAPI *fpSetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, 00101 DWORD Command); 00102 BOOL (WINAPI *fpGetPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pPrinter, 00103 DWORD cbBuf, LPDWORD pcbNeeded); 00104 BOOL (WINAPI *fpEnumPrinters)(DWORD dwType, LPWSTR lpszName, DWORD dwLevel, 00105 LPBYTE lpbPrinters, DWORD cbBuf, LPDWORD lpdwNeeded, 00106 LPDWORD lpdwReturned); 00107 BOOL (WINAPI *fpAddPrinterDriver)(LPWSTR pName, DWORD Level, LPBYTE pDriverInfo); 00108 BOOL (WINAPI *fpEnumPrinterDrivers)(LPWSTR pName, LPWSTR pEnvironment, 00109 DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, 00110 LPDWORD pcbNeeded, LPDWORD pcbReturned); 00111 BOOL (WINAPI *fpGetPrinterDriver)(HANDLE hPrinter, LPWSTR pEnvironment, 00112 DWORD Level, LPBYTE pDriverInfo, DWORD cbBuf, 00113 LPDWORD pcbNeeded); 00114 BOOL (WINAPI *fpGetPrinterDriverDirectory)(LPWSTR pName, LPWSTR pEnvironment, 00115 DWORD Level, LPBYTE pDriverDirectory, 00116 DWORD cbBuf, LPDWORD pcbNeeded); 00117 BOOL (WINAPI *fpDeletePrinterDriver)(LPWSTR pName, LPWSTR pEnvironment, 00118 LPWSTR pDriverName); 00119 BOOL (WINAPI *fpAddPrintProcessor)(LPWSTR pName, LPWSTR pEnvironment, 00120 LPWSTR pPathName, LPWSTR pPrintProcessorName); 00121 BOOL (WINAPI *fpEnumPrintProcessors)(LPWSTR pName, LPWSTR pEnvironment, 00122 DWORD Level, LPBYTE pPrintProcessorInfo, 00123 DWORD cbBuf, LPDWORD pcbNeeded, 00124 LPDWORD pcbReturned); 00125 BOOL (WINAPI *fpGetPrintProcessorDirectory)(LPWSTR pName, LPWSTR pEnvironment, 00126 DWORD Level, LPBYTE pPrintProcessorInfo, 00127 DWORD cbBuf, LPDWORD pcbNeeded); 00128 BOOL (WINAPI *fpDeletePrintProcessor)(LPWSTR pName, LPWSTR pEnvironment, 00129 LPWSTR pPrintProcessorName); 00130 BOOL (WINAPI *fpEnumPrintProcessorDatatypes)(LPWSTR pName, 00131 LPWSTR pPrintProcessorName, 00132 DWORD Level, LPBYTE pDatatypes, 00133 DWORD cbBuf, LPDWORD pcbNeeded, 00134 LPDWORD pcbReturned); 00135 DWORD (WINAPI *fpStartDocPrinter)(HANDLE hPrinter, DWORD Level, LPBYTE pDocInfo); 00136 BOOL (WINAPI *fpStartPagePrinter)(HANDLE hPrinter); 00137 BOOL (WINAPI *fpWritePrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, 00138 LPDWORD pcWritten); 00139 BOOL (WINAPI *fpEndPagePrinter)(HANDLE hPrinter); 00140 BOOL (WINAPI *fpAbortPrinter)(HANDLE hPrinter); 00141 BOOL (WINAPI *fpReadPrinter)(HANDLE hPrinter, LPVOID pBuf, DWORD cbBuf, 00142 LPDWORD pNoBytesRead); 00143 BOOL (WINAPI *fpEndDocPrinter)(HANDLE hPrinter); 00144 BOOL (WINAPI *fpAddJob)(HANDLE hPrinter, DWORD Level, LPBYTE pData, 00145 DWORD cbBuf, LPDWORD pcbNeeded); 00146 BOOL (WINAPI *fpScheduleJob)(HANDLE hPrinter, DWORD JobID); 00147 DWORD (WINAPI *fpGetPrinterData)(HANDLE hPrinter, LPWSTR pValueName, 00148 LPDWORD pType, LPBYTE pData, DWORD nSize, 00149 LPDWORD pcbNeeded); 00150 DWORD (WINAPI *fpSetPrinterData)(HANDLE hPrinter, LPWSTR pValueName, 00151 DWORD Type, LPBYTE pData, DWORD cbData); 00152 DWORD (WINAPI *fpWaitForPrinterChange)(HANDLE hPrinter, DWORD Flags); 00153 BOOL (WINAPI *fpClosePrinter)(HANDLE phPrinter); 00154 BOOL (WINAPI *fpAddForm)(HANDLE hPrinter, DWORD Level, LPBYTE pForm); 00155 BOOL (WINAPI *fpDeleteForm)(HANDLE hPrinter, LPWSTR pFormName); 00156 BOOL (WINAPI *fpGetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level, 00157 LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded); 00158 BOOL (WINAPI *fpSetForm)(HANDLE hPrinter, LPWSTR pFormName, DWORD Level, 00159 LPBYTE pForm); 00160 BOOL (WINAPI *fpEnumForms)(HANDLE hPrinter, DWORD Level, LPBYTE pForm, 00161 DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); 00162 BOOL (WINAPI *fpEnumMonitors)(LPWSTR pName, DWORD Level, LPBYTE pMonitors, 00163 DWORD cbBuf, LPDWORD pcbNeeded, 00164 LPDWORD pcReturned); 00165 BOOL (WINAPI *fpEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts, 00166 DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); 00167 BOOL (WINAPI *fpAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName); 00168 BOOL (WINAPI *fpConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); 00169 BOOL (WINAPI *fpDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); 00170 HANDLE (WINAPI *fpCreatePrinterIC)(HANDLE hPrinter, LPDEVMODEW pDevMode); 00171 BOOL (WINAPI *fpPlayGdiScriptOnPrinterIC)(HANDLE hPrinterIC, LPBYTE pIn, 00172 DWORD cIn, LPBYTE pOut, DWORD cOut, 00173 DWORD ul); 00174 BOOL (WINAPI *fpDeletePrinterIC)(HANDLE hPrinterIC); 00175 BOOL (WINAPI *fpAddPrinterConnection)(LPWSTR pName); 00176 BOOL (WINAPI *fpDeletePrinterConnection)(LPWSTR pName); 00177 DWORD (WINAPI *fpPrinterMessageBox)(HANDLE hPrinter, DWORD Error, HWND hWnd, 00178 LPWSTR pText, LPWSTR pCaption, 00179 DWORD dwType); 00180 BOOL (WINAPI *fpAddMonitor)(LPWSTR pName, DWORD Level, LPBYTE pMonitors); 00181 BOOL (WINAPI *fpDeleteMonitor)(LPWSTR pName, LPWSTR pEnvironment, 00182 LPWSTR pMonitorName); 00183 BOOL (WINAPI *fpResetPrinter)(HANDLE hPrinter, LPPRINTER_DEFAULTSW pDefault); 00184 BOOL (WINAPI *fpGetPrinterDriverEx)(HANDLE hPrinter, LPWSTR pEnvironment, 00185 DWORD Level, LPBYTE pDriverInfo, 00186 DWORD cbBuf, LPDWORD pcbNeeded, 00187 DWORD dwClientMajorVersion, 00188 DWORD dwClientMinorVersion, 00189 PDWORD pdwServerMajorVersion, 00190 PDWORD pdwServerMinorVersion); 00191 HANDLE (WINAPI *fpFindFirstPrinterChangeNotification)(HANDLE hPrinter, 00192 DWORD fdwFlags, 00193 DWORD fdwOptions, 00194 LPVOID pPrinterNotifyOptions); 00195 BOOL (WINAPI *fpFindClosePrinterChangeNotification)(HANDLE hChange); 00196 BOOL (WINAPI *fpAddPortEx)(HANDLE hMonitor, LPWSTR pName, DWORD Level, 00197 LPBYTE lpBuffer, LPWSTR lpMonitorName); 00198 BOOL (WINAPI *fpShutDown)(LPVOID pvReserved); 00199 BOOL (WINAPI *fpRefreshPrinterChangeNotification)(HANDLE hPrinter, 00200 DWORD Reserved, 00201 PVOID pvReserved, 00202 PVOID pPrinterNotifyInfo); 00203 BOOL (WINAPI *fpOpenPrinterEx)(LPWSTR pPrinterName, LPHANDLE phPrinter, 00204 LPPRINTER_DEFAULTSW pDefault, LPBYTE pClientInfo, 00205 DWORD Level); 00206 HANDLE (WINAPI *fpAddPrinterEx)(LPWSTR pName, DWORD Level, LPBYTE pPrinter, 00207 LPBYTE pClientInfo, DWORD ClientInfoLevel); 00208 BOOL (WINAPI *fpSetPort)(LPWSTR pName, LPWSTR pPortName, DWORD dwLevel, 00209 LPBYTE pPortInfo); 00210 DWORD (WINAPI *fpEnumPrinterData)(HANDLE hPrinter, DWORD dwIndex, 00211 LPWSTR pValueName, DWORD cbValueName, 00212 LPDWORD pcbValueName, LPDWORD pType, 00213 LPBYTE pData, DWORD cbData, LPDWORD pcbData); 00214 DWORD (WINAPI *fpDeletePrinterData)(HANDLE hPrinter, LPWSTR pValueName); 00215 DWORD (WINAPI *fpClusterSplOpen)(LPCWSTR pszServer, LPCWSTR pszResource, 00216 PHANDLE phSpooler, LPCWSTR pszName, 00217 LPCWSTR pszAddress); 00218 DWORD (WINAPI *fpClusterSplClose)(HANDLE hSpooler); 00219 DWORD (WINAPI *fpClusterSplIsAlive)(HANDLE hSpooler); 00220 DWORD (WINAPI *fpSetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, 00221 LPCWSTR pValueName, DWORD Type, 00222 LPBYTE pData, DWORD cbData); 00223 DWORD (WINAPI *fpGetPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, 00224 LPCWSTR pValueName, LPDWORD pType, 00225 LPBYTE pData, DWORD nSize, LPDWORD pcbNeeded); 00226 DWORD (WINAPI *fpEnumPrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, 00227 LPBYTE pEnumValues, DWORD cbEnumValues, 00228 LPDWORD pcbEnumValues, LPDWORD pnEnumValues); 00229 DWORD (WINAPI *fpEnumPrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName, 00230 LPWSTR pSubkey, DWORD cbSubkey, LPDWORD pcbSubkey); 00231 DWORD (WINAPI *fpDeletePrinterDataEx)(HANDLE hPrinter, LPCWSTR pKeyName, 00232 LPCWSTR pValueName); 00233 DWORD (WINAPI *fpDeletePrinterKey)(HANDLE hPrinter, LPCWSTR pKeyName); 00234 BOOL (WINAPI *fpSeekPrinter)(HANDLE hPrinter, LARGE_INTEGER liDistanceToMove, 00235 PLARGE_INTEGER pliNewPointer, DWORD dwMoveMethod, 00236 BOOL bWrite); 00237 BOOL (WINAPI *fpDeletePrinterDriverEx)(LPWSTR pName, LPWSTR pEnvironment, 00238 LPWSTR pDriverName, DWORD dwDeleteFlag, 00239 DWORD dwVersionNum); 00240 BOOL (WINAPI *fpAddPerMachineConnection)(LPCWSTR pServer, 00241 LPCWSTR pPrinterName, LPCWSTR pPrintServer, 00242 LPCWSTR pProvider); 00243 BOOL (WINAPI *fpDeletePerMachineConnection)(LPCWSTR pServer, 00244 LPCWSTR pPrinterName); 00245 BOOL (WINAPI *fpEnumPerMachineConnections)(LPCWSTR pServer, 00246 LPBYTE pPrinterEnum, DWORD cbBuf, 00247 LPDWORD pcbNeeded, 00248 LPDWORD pcReturned); 00249 BOOL (WINAPI *fpXcvData)(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData, 00250 DWORD cbInputData, PBYTE pOutputData, DWORD cbOutputData, 00251 PDWORD pcbOutputNeeded, PDWORD pdwStatus); 00252 BOOL (WINAPI *fpAddPrinterDriverEx)(LPWSTR pName, DWORD Level, 00253 LPBYTE pDriverInfo, DWORD dwFileCopyFlags); 00254 BOOL (WINAPI *fpSplReadPrinter)(HANDLE hPrinter, LPBYTE *pBuf, DWORD cbBuf); 00255 BOOL (WINAPI *fpDriverUnloadComplete)(LPWSTR pDriverFile); 00256 BOOL (WINAPI *fpGetSpoolFileInfo)(HANDLE hPrinter, LPWSTR *pSpoolDir, 00257 LPHANDLE phFile, HANDLE hSpoolerProcess, 00258 HANDLE hAppProcess); 00259 BOOL (WINAPI *fpCommitSpoolData)(HANDLE hPrinter, DWORD cbCommit); 00260 BOOL (WINAPI *fpCloseSpoolFileHandle)(HANDLE hPrinter); 00261 BOOL (WINAPI *fpFlushPrinter)(HANDLE hPrinter, LPBYTE pBuf, DWORD cbBuf, 00262 LPDWORD pcWritten, DWORD cSleep); 00263 DWORD (WINAPI *fpSendRecvBidiData)(HANDLE hPort, LPCWSTR pAction, 00264 LPBIDI_REQUEST_CONTAINER pReqData, 00265 LPBIDI_RESPONSE_CONTAINER *ppResData); 00266 BOOL (WINAPI *fpAddDriverCatalog)(HANDLE hPrinter, DWORD dwLevel, 00267 VOID *pvDriverInfCatInfo, DWORD dwCatalogCopyFlags); 00268 } PRINTPROVIDOR, *LPPRINTPROVIDOR; 00269 00270 typedef struct _PRINTPROCESSOROPENDATA { 00271 PDEVMODEW pDevMode; 00272 LPWSTR pDatatype; 00273 LPWSTR pParameters; 00274 LPWSTR pDocumentName; 00275 DWORD JobId; 00276 LPWSTR pOutputFile; 00277 LPWSTR pPrinterName; 00278 } PRINTPROCESSOROPENDATA, *LPPRINTPROCESSOROPENDATA, *PPRINTPROCESSOROPENDATA; 00279 00280 typedef struct _MONITORREG { 00281 DWORD cbSize; 00282 LONG (WINAPI *fpCreateKey)(HANDLE hcKey, LPCWSTR pszSubKey, DWORD dwOptions, 00283 REGSAM samDesired, 00284 PSECURITY_ATTRIBUTES pSecurityAttributes, 00285 PHANDLE phckResult, PDWORD pdwDisposition, 00286 HANDLE hSpooler); 00287 LONG (WINAPI *fpOpenKey)(HANDLE hcKey, LPCWSTR pszSubKey, REGSAM samDesired, 00288 PHANDLE phkResult, HANDLE hSpooler); 00289 LONG (WINAPI *fpCloseKey)(HANDLE hcKey, HANDLE hSpooler); 00290 LONG (WINAPI *fpDeleteKey)(HANDLE hcKey, LPCWSTR pszSubKey, HANDLE hSpooler); 00291 LONG (WINAPI *fpEnumKey)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszName, 00292 PDWORD pcchName, PFILETIME pftLastWriteTime, 00293 HANDLE hSpooler); 00294 LONG (WINAPI *fpQueryInfoKey)(HANDLE hcKey, PDWORD pcSubKeys, PDWORD pcbKey, 00295 PDWORD pcValues, PDWORD pcbValue, PDWORD pcbData, 00296 PDWORD pcbSecurityDescriptor, 00297 PFILETIME pftLastWriteTime, 00298 HANDLE hSpooler); 00299 LONG (WINAPI *fpSetValue)(HANDLE hcKey, LPCWSTR pszValue, DWORD dwType, 00300 const BYTE* pData, DWORD cbData, HANDLE hSpooler); 00301 LONG (WINAPI *fpDeleteValue)(HANDLE hcKey, LPCWSTR pszValue, HANDLE hSpooler); 00302 LONG (WINAPI *fpEnumValue)(HANDLE hcKey, DWORD dwIndex, LPWSTR pszValue, 00303 PDWORD pcbValue, PDWORD pType, PBYTE pData, PDWORD pcbData, 00304 HANDLE hSpooler); 00305 LONG (WINAPI *fpQueryValue)(HANDLE hcKey, LPCWSTR pszValue, PDWORD pType, 00306 PBYTE pData, PDWORD pcbData, HANDLE hSpooler); 00307 } MONITORREG, *PMONITORREG; 00308 00309 typedef struct _MONITORINIT { 00310 DWORD cbSize; 00311 HANDLE hSpooler; 00312 HKEYMONITOR hckRegistryRoot; 00313 PMONITORREG pMonitorReg; 00314 BOOL bLocal; 00315 LPCWSTR pszServerName; 00316 } MONITORINIT, *PMONITORINIT; 00317 00318 typedef struct _MONITOR { 00319 BOOL (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts, 00320 DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned); 00321 BOOL (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle); 00322 BOOL (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName, 00323 PHANDLE pHandle, struct _MONITOR *pMonitor); 00324 BOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName, 00325 DWORD JobId, DWORD Level, LPBYTE pDocInfo); 00326 BOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf, 00327 LPDWORD pcbWritten); 00328 BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer, 00329 LPDWORD pcbRead); 00330 BOOL (WINAPI *pfnEndDocPort)(HANDLE hPort); 00331 BOOL (WINAPI *pfnClosePort)(HANDLE hPort); 00332 BOOL (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName); 00333 BOOL (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer, 00334 LPWSTR lpMonitorName); 00335 BOOL (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); 00336 BOOL (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); 00337 BOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID, 00338 LPWSTR pValueName, LPWSTR lpInBuffer, 00339 DWORD cbInBuffer, LPWSTR lpOutBuffer, 00340 DWORD cbOutBuffer, LPDWORD lpcbReturned); 00341 BOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO, 00342 DWORD reserved); 00343 BOOL (WINAPI *pfnXcvOpenPort)(LPCWSTR pszObject, ACCESS_MASK GrantedAccess, PHANDLE phXcv); 00344 DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName, 00345 PBYTE pInputData, DWORD cbInputData, 00346 PBYTE pOutputData, DWORD cbOutputData, 00347 PDWORD pcbOutputNeeded); 00348 BOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv); 00349 } MONITOR, *LPMONITOR; 00350 00351 typedef struct _MONITOREX { 00352 DWORD dwMonitorSize; 00353 MONITOR Monitor; 00354 } MONITOREX, *LPMONITOREX; 00355 00356 typedef struct _MONITOR2 { 00357 DWORD cbSize; 00358 BOOL (WINAPI *pfnEnumPorts)(LPWSTR pName, DWORD Level, LPBYTE pPorts, 00359 DWORD cbBuf, LPDWORD pcbNeeded, 00360 LPDWORD pcReturned); 00361 BOOL (WINAPI *pfnOpenPort)(LPWSTR pName, PHANDLE pHandle); 00362 BOOL (WINAPI *pfnOpenPortEx)(LPWSTR pPortName, LPWSTR pPrinterName, 00363 PHANDLE pHandle, struct _MONITOR2 *pMonitor2); 00364 BOOL (WINAPI *pfnStartDocPort)(HANDLE hPort, LPWSTR pPrinterName, 00365 DWORD JobId, DWORD Level, LPBYTE pDocInfo); 00366 BOOL (WINAPI *pfnWritePort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuf, 00367 LPDWORD pcbWritten); 00368 BOOL (WINAPI *pfnReadPort)(HANDLE hPort, LPBYTE pBuffer, DWORD cbBuffer, 00369 LPDWORD pcbRead); 00370 BOOL (WINAPI *pfnEndDocPort)(HANDLE hPort); 00371 BOOL (WINAPI *pfnClosePort)(HANDLE hPort); 00372 BOOL (WINAPI *pfnAddPort)(LPWSTR pName, HWND hWnd, LPWSTR pMonitorName); 00373 BOOL (WINAPI *pfnAddPortEx)(LPWSTR pName, DWORD Level, LPBYTE lpBuffer, 00374 LPWSTR lpMonitorName); 00375 BOOL (WINAPI *pfnConfigurePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); 00376 BOOL (WINAPI *pfnDeletePort)(LPWSTR pName, HWND hWnd, LPWSTR pPortName); 00377 BOOL (WINAPI *pfnGetPrinterDataFromPort)(HANDLE hPort, DWORD ControlID, 00378 LPWSTR pValueName, LPWSTR lpInBuffer, 00379 DWORD cbInBuffer, LPWSTR lpOutBuffer, 00380 DWORD cbOutBuffer, LPDWORD lpcbReturned); 00381 BOOL (WINAPI *pfnSetPortTimeOuts)(HANDLE hPort, LPCOMMTIMEOUTS lpCTO, 00382 DWORD reserved); 00383 BOOL (WINAPI *pfnXcvOpenPort)(HANDLE hMonitor, LPCWSTR pszObject, 00384 ACCESS_MASK GrantedAccess, PHANDLE phXcv); 00385 DWORD (WINAPI *pfnXcvDataPort)(HANDLE hXcv, LPCWSTR pszDataName, 00386 PBYTE pInputData, DWORD cbInputData, 00387 PBYTE pOutputData, DWORD cbOutputData, 00388 PDWORD pcbOutputNeeded); 00389 BOOL (WINAPI *pfnXcvClosePort)(HANDLE hXcv); 00390 VOID (WINAPI *pfnShutdown)(HANDLE hMonitor); 00391 #if (NTDDI_VERSION >= NTDDI_WINXP) 00392 DWORD (WINAPI *pfnSendRecvBidiDataFromPort)(HANDLE hPort, DWORD dwAccessBit, 00393 LPCWSTR pAction, 00394 PBIDI_REQUEST_CONTAINER pReqData, 00395 PBIDI_RESPONSE_CONTAINER *ppResData); 00396 #endif 00397 #if (NTDDI_VERSION >= NTDDI_WIN7) 00398 DWORD (WINAPI *pfnNotifyUsedPorts)(HANDLE hMonitor, DWORD cPorts, 00399 PCWSTR *ppszPorts); 00400 00401 DWORD (WINAPI *pfnNotifyUnusedPorts)(HANDLE hMonitor, DWORD cPorts, 00402 PCWSTR *ppszPorts); 00403 #endif 00404 } MONITOR2, *LPMONITOR2, *PMONITOR2; 00405 00406 typedef struct _MONITORUI { 00407 DWORD dwMonitorUISize; 00408 BOOL (WINAPI *pfnAddPortUI)(PCWSTR pszServer, HWND hWnd, 00409 PCWSTR pszPortNameIn, PWSTR *ppszPortNameOut); 00410 BOOL (WINAPI *pfnConfigurePortUI)(PCWSTR pName, HWND hWnd, PCWSTR pPortName); 00411 BOOL (WINAPI *pfnDeletePortUI)(PCWSTR pszServer, HWND hWnd, PCWSTR pszPortName); 00412 } MONITORUI, *PMONITORUI; 00413 00414 #if (NTDDI_VERSION >= NTDDI_WINXP) 00415 00416 typedef enum { 00417 kMessageBox = 0 00418 } UI_TYPE; 00419 00420 typedef struct { 00421 DWORD cbSize; 00422 LPWSTR pTitle; 00423 LPWSTR pMessage; 00424 DWORD Style; 00425 DWORD dwTimeout; 00426 BOOL bWait; 00427 } MESSAGEBOX_PARAMS, *PMESSAGEBOX_PARAMS; 00428 00429 typedef struct { 00430 UI_TYPE UIType; 00431 MESSAGEBOX_PARAMS MessageBoxParams; 00432 } SHOWUIPARAMS, *PSHOWUIPARAMS; 00433 00434 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ 00435 00436 #if (NTDDI_VERSION >= NTDDI_WS03) 00437 #ifndef __ATTRIBUTE_INFO_3__ 00438 #define __ATTRIBUTE_INFO_3__ 00439 typedef struct _ATTRIBUTE_INFO_3 { 00440 DWORD dwJobNumberOfPagesPerSide; 00441 DWORD dwDrvNumberOfPagesPerSide; 00442 DWORD dwNupBorderFlags; 00443 DWORD dwJobPageOrderFlags; 00444 DWORD dwDrvPageOrderFlags; 00445 DWORD dwJobNumberOfCopies; 00446 DWORD dwDrvNumberOfCopies; 00447 DWORD dwColorOptimization; 00448 short dmPrintQuality; 00449 short dmYResolution; 00450 } ATTRIBUTE_INFO_3, *PATTRIBUTE_INFO_3; 00451 #endif /* __ATTRIBUTE_INFO_3__ */ 00452 #endif /* (NTDDI_VERSION >= NTDDI_WS03) */ 00453 00454 #if (NTDDI_VERSION >= NTDDI_VISTA) 00455 00456 typedef BOOL 00457 (CALLBACK *ROUTER_NOTIFY_CALLBACK)( 00458 IN DWORD dwCommand, 00459 IN PVOID pContext, 00460 IN DWORD dwColor, 00461 IN PPRINTER_NOTIFY_INFO pNofityInfo, 00462 IN DWORD fdwFlags, 00463 OUT PDWORD pdwResult); 00464 00465 typedef enum _NOTIFICATION_CALLBACK_COMMANDS { 00466 NOTIFICATION_COMMAND_NOTIFY, 00467 NOTIFICATION_COMMAND_CONTEXT_ACQUIRE, 00468 NOTIFICATION_COMMAND_CONTEXT_RELEASE 00469 } NOTIFICATION_CALLBACK_COMMANDS; 00470 00471 typedef struct _NOTIFICATION_CONFIG_1 { 00472 UINT cbSize; 00473 DWORD fdwFlags; 00474 ROUTER_NOTIFY_CALLBACK pfnNotifyCallback; 00475 PVOID pContext; 00476 } NOTIFICATION_CONFIG_1, *PNOTIFICATION_CONFIG_1; 00477 00478 typedef enum _NOTIFICATION_CONFIG_FLAGS { 00479 NOTIFICATION_CONFIG_CREATE_EVENT = 1 << 0, 00480 NOTIFICATION_CONFIG_REGISTER_CALLBACK = 1 << 1, 00481 NOTIFICATION_CONFIG_EVENT_TRIGGER = 1 << 2, 00482 NOTIFICATION_CONFIG_ASYNC_CHANNEL = 1 << 3 00483 } NOTIFICATION_CONFIG_FLAGS; 00484 00485 typedef struct _SPLCLIENT_INFO_3 { 00486 UINT cbSize; 00487 DWORD dwFlags; 00488 DWORD dwSize; 00489 PWSTR pMachineName; 00490 PWSTR pUserName; 00491 DWORD dwBuildNum; 00492 DWORD dwMajorVersion; 00493 DWORD dwMinorVersion; 00494 WORD wProcessorArchitecture; 00495 UINT64 hSplPrinter; 00496 } SPLCLIENT_INFO_3, *PSPLCLIENT_INFO_3, *LPSPLCLIENT_INFO_3; 00497 00498 #ifndef __ATTRIBUTE_INFO_4__ 00499 #define __ATTRIBUTE_INFO_4__ 00500 00501 typedef struct _ATTRIBUTE_INFO_4 { 00502 DWORD dwJobNumberOfPagesPerSide; 00503 DWORD dwDrvNumberOfPagesPerSide; 00504 DWORD dwNupBorderFlags; 00505 DWORD dwJobPageOrderFlags; 00506 DWORD dwDrvPageOrderFlags; 00507 DWORD dwJobNumberOfCopies; 00508 DWORD dwDrvNumberOfCopies; 00509 DWORD dwColorOptimization; 00510 short dmPrintQuality; 00511 short dmYResolution; 00512 DWORD dwDuplexFlags; 00513 DWORD dwNupDirection; 00514 DWORD dwBookletFlags; 00515 DWORD dwScalingPercentX; 00516 DWORD dwScalingPercentY; 00517 } ATTRIBUTE_INFO_4, *PATTRIBUTE_INFO_4; 00518 00519 #define REVERSE_PAGES_FOR_REVERSE_DUPLEX (0x00000001) 00520 #define DONT_SEND_EXTRA_PAGES_FOR_DUPLEX (0x00000001 << 1) 00521 00522 #define RIGHT_THEN_DOWN (0x00000001) 00523 #define DOWN_THEN_RIGHT (0x00000001 << 1) 00524 #define LEFT_THEN_DOWN (0x00000001 << 2) 00525 #define DOWN_THEN_LEFT (0x00000001 << 3) 00526 00527 #define BOOKLET_EDGE_LEFT 0x00000000 00528 #define BOOKLET_EDGE_RIGHT 0x00000001 00529 00530 #endif /* __ATTRIBUTE_INFO_4__ */ 00531 00532 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ 00533 00534 #if (OSVER(NTDDI_VERSION) == NTDDI_W2K) 00535 typedef SPLCLIENT_INFO_2_W2K SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2; 00536 #elif ((OSVER(NTDDI_VERSION) == NTDDI_WINXP) || (OSVER(NTDDI_VERSION) == NTDDI_WS03)) 00537 typedef SPLCLIENT_INFO_2_WINXP SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2; 00538 #else 00539 typedef SPLCLIENT_INFO_2_LONGHORN SPLCLIENT_INFO_2, *PSPLCLIENT_INFO_2, *LPSPLCLIENT_INFO_2; 00540 #endif /* (OSVER(NTDDI_VERSION) == NTDDI_W2K) */ 00541 00542 BOOL 00543 WINAPI 00544 InitializePrintProvidor( 00545 OUT LPPRINTPROVIDOR pPrintProvidor, 00546 IN DWORD cbPrintProvidor, 00547 IN LPWSTR pFullRegistryPath OPTIONAL); 00548 00549 HANDLE 00550 WINAPI 00551 OpenPrintProcessor( 00552 IN LPWSTR pPrinterName, 00553 IN PPRINTPROCESSOROPENDATA pPrintProcessorOpenData); 00554 00555 BOOL 00556 WINAPI 00557 PrintDocumentOnPrintProcessor( 00558 IN HANDLE hPrintProcessor, 00559 IN LPWSTR pDocumentName); 00560 00561 BOOL 00562 WINAPI 00563 ClosePrintProcessor( 00564 IN OUT HANDLE hPrintProcessor); 00565 00566 BOOL 00567 WINAPI 00568 ControlPrintProcessor( 00569 IN HANDLE hPrintProcessor, 00570 IN DWORD Command); 00571 00572 DWORD 00573 WINAPI 00574 GetPrintProcessorCapabilities( 00575 IN LPTSTR pValueName, 00576 IN DWORD dwAttributes, 00577 OUT LPBYTE pData, 00578 IN DWORD nSize, 00579 OUT LPDWORD pcbNeeded); 00580 00581 BOOL 00582 WINAPI 00583 InitializeMonitor( 00584 IN LPWSTR pRegistryRoot); 00585 00586 BOOL 00587 WINAPI 00588 OpenPort( 00589 IN LPWSTR pName, 00590 OUT PHANDLE pHandle); 00591 00592 BOOL 00593 WINAPI 00594 WritePort( 00595 HANDLE hPort, 00596 LPBYTE pBuffer, 00597 DWORD cbBuf, 00598 LPDWORD pcbWritten); 00599 00600 BOOL 00601 WINAPI 00602 ReadPort( 00603 HANDLE hPort, 00604 LPBYTE pBuffer, 00605 DWORD cbBuffer, 00606 LPDWORD pcbRead); 00607 00608 BOOL 00609 WINAPI 00610 ClosePort( 00611 IN HANDLE hPort); 00612 00613 BOOL 00614 WINAPI 00615 XcvOpenPort( 00616 LPCWSTR pszObject, 00617 ACCESS_MASK GrantedAccess, 00618 PHANDLE phXcv); 00619 00620 DWORD 00621 WINAPI 00622 XcvDataPort( 00623 HANDLE hXcv, 00624 LPCWSTR pszDataName, 00625 PBYTE pInputData, 00626 DWORD cbInputData, 00627 PBYTE pOutputData, 00628 DWORD cbOutputData, 00629 PDWORD pcbOutputNeeded); 00630 00631 BOOL 00632 WINAPI 00633 XcvClosePort( 00634 IN HANDLE hXcv); 00635 00636 BOOL 00637 WINAPI 00638 AddPortUI( 00639 IN PCWSTR pszServer OPTIONAL, 00640 IN HWND hWnd, 00641 IN PCWSTR pszMonitorNameIn, 00642 OUT PWSTR *ppszPortNameOut OPTIONAL); 00643 00644 BOOL 00645 WINAPI 00646 ConfigurePortUI( 00647 IN PCWSTR pszServer, 00648 IN HWND hWnd, 00649 IN PCWSTR pszPortName); 00650 00651 BOOL 00652 WINAPI 00653 DeletePortUI( 00654 IN PCWSTR pszServer, 00655 IN HWND hWnd, 00656 IN PCWSTR pszPortName); 00657 00658 BOOL 00659 WINAPI 00660 SplDeleteSpoolerPortStart( 00661 IN PCWSTR pPortName); 00662 00663 BOOL 00664 WINAPI 00665 SplDeleteSpoolerPortEnd( 00666 IN PCWSTR pName, 00667 IN BOOL bDeletePort); 00668 00669 BOOL 00670 WINAPI 00671 SpoolerCopyFileEvent( 00672 IN LPWSTR pszPrinterName, 00673 IN LPWSTR pszKey, 00674 IN DWORD dwCopyFileEvent); 00675 00676 DWORD 00677 WINAPI 00678 GenerateCopyFilePaths( 00679 IN LPCWSTR pszPrinterName, 00680 IN LPCWSTR pszDirectory, 00681 IN LPBYTE pSplClientInfo, 00682 IN DWORD dwLevel, 00683 IN OUT LPWSTR pszSourceDir, 00684 IN OUT LPDWORD pcchSourceDirSize, 00685 IN OUT LPWSTR pszTargetDir, 00686 IN OUT LPDWORD pcchTargetDirSize, 00687 IN DWORD dwFlags); 00688 00689 HANDLE WINAPI CreatePrinterIC(HANDLE hPrinter, LPDEVMODEW pDevMode); 00690 BOOL WINAPI PlayGdiScriptOnPrinterIC(HANDLE hPrinterIC, LPBYTE pIn, 00691 DWORD cIn, LPBYTE pOut, DWORD cOut, DWORD ul); 00692 BOOL WINAPI DeletePrinterIC(HANDLE hPrinterIC); 00693 BOOL WINAPI DevQueryPrint(HANDLE hPrinter, LPDEVMODEW pDevMode, DWORD *pResID); 00694 HANDLE WINAPI RevertToPrinterSelf(VOID); 00695 BOOL WINAPI ImpersonatePrinterClient(HANDLE hToken); 00696 BOOL WINAPI ReplyPrinterChangeNotification(HANDLE hNotify, DWORD fdwFlags, 00697 PDWORD pdwResult, PVOID pPrinterNotifyInfo); 00698 BOOL WINAPI ReplyPrinterChangeNotificationEx(HANDLE hNotify, DWORD dwColor, 00699 DWORD fdwFlags, PDWORD pdwResult, 00700 PVOID pPrinterNotifyInfo); 00701 BOOL WINAPI PartialReplyPrinterChangeNotification(HANDLE hNotify, 00702 PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc); 00703 PPRINTER_NOTIFY_INFO WINAPI RouterAllocPrinterNotifyInfo(DWORD cPrinterNotifyInfoData); 00704 BOOL WINAPI RouterFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo); 00705 00706 BOOL WINAPI AppendPrinterNotifyInfoData(PPRINTER_NOTIFY_INFO pInfoDest, 00707 PPRINTER_NOTIFY_INFO_DATA pInfoDataSrc, 00708 DWORD fdwFlags); 00709 DWORD WINAPI CallRouterFindFirstPrinterChangeNotification(HANDLE hPrinter, 00710 DWORD fdwFlags, 00711 DWORD fdwOptions, 00712 HANDLE hNotify, 00713 PPRINTER_NOTIFY_OPTIONS pPrinterNotifyOptions); 00714 BOOL WINAPI ProvidorFindFirstPrinterChangeNotification(HANDLE hPrinter, 00715 DWORD fdwFlags, 00716 DWORD fdwOptions, 00717 HANDLE hNotify, 00718 PVOID pvReserved0, 00719 PVOID pvReserved1); 00720 BOOL WINAPI ProvidorFindClosePrinterChangeNotification(HANDLE hPrinter); 00721 00722 /* Spooler */ 00723 BOOL WINAPI SpoolerFindFirstPrinterChangeNotification(HANDLE hPrinter, 00724 DWORD fdwFlags, 00725 DWORD fdwOptions, 00726 PHANDLE phEvent, 00727 PVOID pPrinterNotifyOptions, 00728 PVOID pvReserved); 00729 BOOL WINAPI SpoolerFindNextPrinterChangeNotification(HANDLE hPrinter, 00730 LPDWORD pfdwChange, 00731 PVOID pvReserved0, 00732 PVOID ppPrinterNotifyInfo); 00733 VOID WINAPI SpoolerFreePrinterNotifyInfo(PPRINTER_NOTIFY_INFO pInfo); 00734 BOOL WINAPI SpoolerFindClosePrinterChangeNotification(HANDLE hPrinter); 00735 00736 /* Port monitor / Language monitor / Print monitor */ 00737 LPMONITOR2 WINAPI InitializePrintMonitor2(PMONITORINIT pMonitorInit, 00738 PHANDLE phMonitor); 00739 PMONITORUI WINAPI InitializePrintMonitorUI(VOID); 00740 LPMONITOREX WINAPI InitializePrintMonitor(LPWSTR pRegistryRoot); 00741 BOOL WINAPI InitializeMonitorEx(LPWSTR pRegistryRoot, LPMONITOR pMonitor); 00742 00743 #if (NTDDI_VERSION >= NTDDI_WINXP) 00744 00745 PBIDI_RESPONSE_CONTAINER WINAPI RouterAllocBidiResponseContainer(DWORD Count); 00746 PVOID WINAPI RouterAllocBidiMem(size_t NumBytes); 00747 DWORD WINAPI RouterFreeBidiResponseContainer(PBIDI_RESPONSE_CONTAINER pData); 00748 VOID WINAPI RouterFreeBidiMem(PVOID pMemPointer); 00749 00750 BOOL 00751 WINAPI 00752 SplPromptUIInUsersSession( 00753 IN HANDLE hPrinter, 00754 IN DWORD JobId, 00755 IN PSHOWUIPARAMS pUIParams, 00756 OUT DWORD *pResponse); 00757 00758 DWORD 00759 WINAPI 00760 SplIsSessionZero( 00761 IN HANDLE hPrinter, 00762 IN DWORD JobId, 00763 OUT BOOL *pIsSessionZero); 00764 00765 #endif /* (NTDDI_VERSION >= NTDDI_WINXP) */ 00766 00767 #if (NTDDI_VERSION >= NTDDI_WS03) 00768 BOOL 00769 WINAPI 00770 GetJobAttributes( 00771 IN LPWSTR pPrinterName, 00772 IN LPDEVMODEW pDevmode, 00773 OUT PATTRIBUTE_INFO_3 pAttributeInfo); 00774 #endif 00775 00776 #if (NTDDI_VERSION >= NTDDI_VISTA) 00777 00778 #define FILL_WITH_DEFAULTS 0x1 00779 00780 BOOL 00781 WINAPI 00782 GetJobAttributesEx( 00783 IN LPWSTR pPrinterName, 00784 IN LPDEVMODEW pDevmode, 00785 IN DWORD dwLevel, 00786 OUT LPBYTE pAttributeInfo, 00787 IN DWORD nSize, 00788 IN DWORD dwFlags); 00789 00790 BOOL WINAPI SpoolerRefreshPrinterChangeNotification(HANDLE hPrinter, 00791 DWORD dwColor, 00792 PPRINTER_NOTIFY_OPTIONS pOptions, 00793 PPRINTER_NOTIFY_INFO *ppInfo); 00794 00795 #endif /* (NTDDI_VERSION >= NTDDI_VISTA) */ 00796 00797 /* FIXME : The following declarations are not present in the official header */ 00798 00799 BOOL WINAPI OpenPrinterToken(PHANDLE phToken); 00800 BOOL WINAPI SetPrinterToken(HANDLE hToken); 00801 BOOL WINAPI ClosePrinterToken(HANDLE hToken); 00802 BOOL WINAPI InstallPrintProcessor(HWND hWnd); 00803 00804 #ifdef __cplusplus 00805 } 00806 #endif Generated on Sun May 27 2012 04:32:49 for ReactOS by
1.7.6.1
|