[SHELL32] SHChangeNotify: Add drive, remove drive (#6782)
[reactos.git] / win32ss / printing / base / spoolss / printprocessors.c
1 /*
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)
6 */
7
8 #include "precomp.h"
9 #include <prtprocenv.h>
10
11 BOOL WINAPI
12 AddPrintProcessorW(PWSTR pName, PWSTR pEnvironment, PWSTR pPathName, PWSTR pPrintProcessorName)
13 {
14 if (!pEnvironment || !*pEnvironment)
15 pEnvironment = (PWSTR)wszCurrentEnvironment;
16 return FALSE;
17 }
18
19 BOOL WINAPI
20 DeletePrintProcessorW(PWSTR pName, PWSTR pEnvironment, PWSTR pPrintProcessorName)
21 {
22 if (!pEnvironment || !*pEnvironment)
23 pEnvironment = (PWSTR)wszCurrentEnvironment;
24 return FALSE;
25 }
26
27 BOOL WINAPI
28 EnumPrintProcessorDatatypesW(PWSTR pName, PWSTR pPrintProcessorName, DWORD Level, PBYTE pDatatypes, DWORD cbBuf, PDWORD pcbNeeded, PDWORD pcReturned)
29 {
30 PSPOOLSS_PRINT_PROVIDER pPrintProvider;
31
32 // Sanity checks
33 if (cbBuf && !pDatatypes)
34 {
35 SetLastError(ERROR_INVALID_USER_BUFFER);
36 return FALSE;
37 }
38
39 if ( cbBuf && !pDatatypes )
40 {
41 SetLastError(ERROR_INVALID_USER_BUFFER);
42 return FALSE;
43 }
44
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);
48 }
49
50 BOOL WINAPI
51 EnumPrintProcessorsW(PWSTR pName, PWSTR pEnvironment, DWORD Level, PBYTE pPrintProcessorInfo, DWORD cbBuf, PDWORD pcbNeeded, PDWORD pcReturned)
52 {
53 // Always call this function on the Local Spooler.
54 PSPOOLSS_PRINT_PROVIDER pPrintProvider = CONTAINING_RECORD(PrintProviderList.Flink, SPOOLSS_PRINT_PROVIDER, Entry);
55
56 if ( cbBuf && !pPrintProcessorInfo )
57 {
58 SetLastError(ERROR_INVALID_USER_BUFFER);
59 return FALSE;
60 }
61
62 return pPrintProvider->PrintProvider.fpEnumPrintProcessors(pName, pEnvironment, Level, pPrintProcessorInfo, cbBuf, pcbNeeded, pcReturned);
63 }
64
65 BOOL WINAPI
66 GetPrintProcessorDirectoryW(PWSTR pName, PWSTR pEnvironment, DWORD Level, PBYTE pPrintProcessorInfo, DWORD cbBuf, PDWORD pcbNeeded)
67 {
68 PSPOOLSS_PRINT_PROVIDER pPrintProvider;
69
70 // Sanity checks
71 if (cbBuf && !pPrintProcessorInfo)
72 {
73 SetLastError(ERROR_INVALID_USER_BUFFER);
74 return FALSE;
75 }
76
77 if ( cbBuf && !pPrintProcessorInfo )
78 {
79 SetLastError(ERROR_INVALID_USER_BUFFER);
80 return FALSE;
81 }
82
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);
86 }