2 * PROJECT: ReactOS Spooler Router
3 * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4 * PURPOSE: Functions related to Print Processors
5 * COPYRIGHT: Copyright 2015-2017 Colin Finck (colin@reactos.org)
9 #include <prtprocenv.h>
12 AddPrintProcessorW(PWSTR pName
, PWSTR pEnvironment
, PWSTR pPathName
, PWSTR pPrintProcessorName
)
14 if (!pEnvironment
|| !*pEnvironment
)
15 pEnvironment
= (PWSTR
)wszCurrentEnvironment
;
20 DeletePrintProcessorW(PWSTR pName
, PWSTR pEnvironment
, PWSTR pPrintProcessorName
)
22 if (!pEnvironment
|| !*pEnvironment
)
23 pEnvironment
= (PWSTR
)wszCurrentEnvironment
;
28 EnumPrintProcessorDatatypesW(PWSTR pName
, PWSTR pPrintProcessorName
, DWORD Level
, PBYTE pDatatypes
, DWORD cbBuf
, PDWORD pcbNeeded
, PDWORD pcReturned
)
30 PSPOOLSS_PRINT_PROVIDER pPrintProvider
;
33 if (cbBuf
&& !pDatatypes
)
35 SetLastError(ERROR_INVALID_USER_BUFFER
);
39 if ( cbBuf
&& !pDatatypes
)
41 SetLastError(ERROR_INVALID_USER_BUFFER
);
45 // Always call this function on the Local Spooler.
46 pPrintProvider
= CONTAINING_RECORD(PrintProviderList
.Flink
, SPOOLSS_PRINT_PROVIDER
, Entry
);
47 return pPrintProvider
->PrintProvider
.fpEnumPrintProcessorDatatypes(pName
, pPrintProcessorName
, Level
, pDatatypes
, cbBuf
, pcbNeeded
, pcReturned
);
51 EnumPrintProcessorsW(PWSTR pName
, PWSTR pEnvironment
, DWORD Level
, PBYTE pPrintProcessorInfo
, DWORD cbBuf
, PDWORD pcbNeeded
, PDWORD pcReturned
)
53 // Always call this function on the Local Spooler.
54 PSPOOLSS_PRINT_PROVIDER pPrintProvider
= CONTAINING_RECORD(PrintProviderList
.Flink
, SPOOLSS_PRINT_PROVIDER
, Entry
);
56 if ( cbBuf
&& !pPrintProcessorInfo
)
58 SetLastError(ERROR_INVALID_USER_BUFFER
);
62 return pPrintProvider
->PrintProvider
.fpEnumPrintProcessors(pName
, pEnvironment
, Level
, pPrintProcessorInfo
, cbBuf
, pcbNeeded
, pcReturned
);
66 GetPrintProcessorDirectoryW(PWSTR pName
, PWSTR pEnvironment
, DWORD Level
, PBYTE pPrintProcessorInfo
, DWORD cbBuf
, PDWORD pcbNeeded
)
68 PSPOOLSS_PRINT_PROVIDER pPrintProvider
;
71 if (cbBuf
&& !pPrintProcessorInfo
)
73 SetLastError(ERROR_INVALID_USER_BUFFER
);
77 if ( cbBuf
&& !pPrintProcessorInfo
)
79 SetLastError(ERROR_INVALID_USER_BUFFER
);
83 // Always call this function on the Local Spooler.
84 pPrintProvider
= CONTAINING_RECORD(PrintProviderList
.Flink
, SPOOLSS_PRINT_PROVIDER
, Entry
);
85 return pPrintProvider
->PrintProvider
.fpGetPrintProcessorDirectory(pName
, pEnvironment
, Level
, pPrintProcessorInfo
, cbBuf
, pcbNeeded
);