ReactOS  0.4.15-dev-3175-g222acf5
printproviders.c File Reference
#include "precomp.h"
Include dependency graph for printproviders.c:

Go to the source code of this file.

Functions

BOOL WINAPI AddPrintProvidorA (PSTR pName, DWORD Level, PBYTE pProviderInfo)
 
BOOL WINAPI AddPrintProvidorW (PWSTR pName, DWORD Level, PBYTE pProviderInfo)
 
BOOL WINAPI DeletePrintProvidorA (PSTR pName, PSTR pEnvironment, PSTR pPrintProviderName)
 
BOOL WINAPI DeletePrintProvidorW (PWSTR pName, PWSTR pEnvironment, PWSTR pPrintProviderName)
 

Function Documentation

◆ AddPrintProvidorA()

BOOL WINAPI AddPrintProvidorA ( PSTR  pName,
DWORD  Level,
PBYTE  pProviderInfo 
)

Definition at line 11 of file printproviders.c.

12 {
13  LPWSTR nameW = NULL;
14  PROVIDOR_INFO_1W pi1W;
15  PROVIDOR_INFO_2W pi2W;
16  DWORD len;
17  BOOL res;
18  PBYTE pPI = NULL;
19 
20  TRACE("AddPrintProvidorA(%s, %lu, %p)\n", pName, Level, pProviderInfo);
21 
22  ZeroMemory(&pi1W, sizeof(PROVIDOR_INFO_1W));
23  pi2W.pOrder = NULL;
24 
25  switch (Level)
26  {
27  case 1:
28  {
29  PROVIDOR_INFO_1A *pi1A = (PROVIDOR_INFO_1A*)pProviderInfo;
30  if (pi1A->pName)
31  {
32  len = MultiByteToWideChar(CP_ACP, 0, pi1A->pName, -1, NULL, 0);
33  pi1W.pName = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
34  MultiByteToWideChar(CP_ACP, 0, pi1A->pName, -1, pi1W.pName, len);
35  }
36  if (pi1A->pEnvironment)
37  {
38  len = MultiByteToWideChar(CP_ACP, 0, pi1A->pEnvironment, -1, NULL, 0);
39  pi1W.pEnvironment = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
41  }
42  if (pi1A->pDLLName)
43  {
44  len = MultiByteToWideChar(CP_ACP, 0, pi1A->pDLLName, -1, NULL, 0);
45  pi1W.pDLLName = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
46  MultiByteToWideChar(CP_ACP, 0, pi1A->pDLLName, -1, pi1W.pDLLName, len);
47  }
48  pPI = (PBYTE)&pi1W;
49  }
50  break;
51 
52  case 2:
53  {
54  PROVIDOR_INFO_2A *pi2A = (PROVIDOR_INFO_2A*)pProviderInfo;
55  if (pi2A->pOrder)
56  {
57  len = MultiByteToWideChar(CP_ACP, 0, pi2A->pOrder, -1, NULL, 0);
58  pi2W.pOrder = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
59  MultiByteToWideChar(CP_ACP, 0, pi2A->pOrder, -1, pi2W.pOrder, len);
60  }
61  pPI = (PBYTE)&pi2W;
62  }
63  break;
64 
65  default:
67  return FALSE;
68  }
69 
70  if (pName)
71  {
72  len = MultiByteToWideChar(CP_ACP, 0, pName, -1, NULL, 0);
73  nameW = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR));
75  }
76 
77  res = AddPrintProvidorW( nameW, Level, pPI );
78 
79  if (pName) HeapFree(GetProcessHeap(), 0, nameW);
80  if (pi1W.pName) HeapFree(GetProcessHeap(), 0, pi1W.pName);
81  if (pi1W.pEnvironment) HeapFree(GetProcessHeap(), 0, pi1W.pEnvironment);
82  if (pi1W.pDLLName) HeapFree(GetProcessHeap(), 0, pi1W.pDLLName);
83  if (pi2W.pOrder) HeapFree(GetProcessHeap(), 0, pi2W.pOrder);
84 
85  return res;
86 }
#define CP_ACP
Definition: compat.h:109
#define ZeroMemory
Definition: winbase.h:1664
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
Definition: wmitypes.h:55
BOOL WINAPI AddPrintProvidorW(PWSTR pName, DWORD Level, PBYTE pProviderInfo)
#define FALSE
Definition: types.h:117
unsigned int BOOL
Definition: ntddk_ex.h:94
static const WCHAR nameW[]
Definition: main.c:46
#define TRACE(s)
Definition: solgame.cpp:4
static LPSTR pName
Definition: security.c:75
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:611
GLenum GLsizei len
Definition: glext.h:6722
LPWSTR pEnvironment
Definition: winspool.h:1311
#define NULL
Definition: types.h:112
#define MultiByteToWideChar
Definition: compat.h:110
GLuint res
Definition: glext.h:9613
#define ERROR_INVALID_LEVEL
Definition: winerror.h:196
WCHAR * LPWSTR
Definition: xmlstorage.h:184
BYTE * PBYTE
Definition: pedump.c:66
#define HeapFree(x, y, z)
Definition: compat.h:594

◆ AddPrintProvidorW()

BOOL WINAPI AddPrintProvidorW ( PWSTR  pName,
DWORD  Level,
PBYTE  pProviderInfo 
)

Definition at line 89 of file printproviders.c.

90 {
91  DWORD dwErrorCode;
92  WINSPOOL_PROVIDOR_CONTAINER ProvidorContainer;
93 
94  TRACE("AddPrintProvidorW(%S, %lu, %p)\n", pName, Level, pProviderInfo);
95 
96  if ((Level < 1) || (Level > 2))
97  {
99  return FALSE;
100  }
101 
102  ProvidorContainer.ProvidorInfo.pProvidorInfo1 = (WINSPOOL_PROVIDOR_INFO_1*)pProviderInfo;
103  ProvidorContainer.Level = Level;
104 
106  {
107  dwErrorCode = _RpcAddPrintProvidor( pName, &ProvidorContainer );
108  }
110  {
111  dwErrorCode = RpcExceptionCode();
112  ERR("_RpcEnumPorts failed with exception code %lu!\n", dwErrorCode);
113  }
114  RpcEndExcept;
115 
116  SetLastError(dwErrorCode);
117  return (dwErrorCode == ERROR_SUCCESS);
118 }
#define RpcEndExcept
Definition: rpc.h:128
#define ERROR_SUCCESS
Definition: deptool.c:10
union _WINSPOOL_PROVIDOR_CONTAINER::@3357 ProvidorInfo
_IRQL_requires_same_ typedef _In_ ULONG _In_ UCHAR Level
Definition: wmitypes.h:55
WINSPOOL_PROVIDOR_INFO_1 * pProvidorInfo1
Definition: winspool.idl:727
#define FALSE
Definition: types.h:117
#define RpcTryExcept
Definition: rpc.h:126
DWORD _RpcAddPrintProvidor(WINSPOOL_HANDLE pName, WINSPOOL_PROVIDOR_CONTAINER *pProvidorContainer)
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
static LPSTR pName
Definition: security.c:75
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:611
#define ERR(fmt,...)
Definition: debug.h:110
#define ERROR_INVALID_LEVEL
Definition: winerror.h:196
#define RpcExcept(expr)
Definition: rpc.h:127

◆ DeletePrintProvidorA()

BOOL WINAPI DeletePrintProvidorA ( PSTR  pName,
PSTR  pEnvironment,
PSTR  pPrintProviderName 
)

Definition at line 121 of file printproviders.c.

122 {
123  UNICODE_STRING NameW, EnvW, ProviderW;
124  BOOL Ret;
125 
126  TRACE("DeletePrintProvidorW(%s, %s, %s)\n", pName, pEnvironment, pPrintProviderName);
127 
128  AsciiToUnicode(&NameW, pName);
129  AsciiToUnicode(&EnvW, pEnvironment);
130  AsciiToUnicode(&ProviderW, pPrintProviderName);
131 
132  Ret = DeletePrintProvidorW(NameW.Buffer, EnvW.Buffer, ProviderW.Buffer);
133 
134  RtlFreeUnicodeString(&ProviderW);
135  RtlFreeUnicodeString(&EnvW);
136  RtlFreeUnicodeString(&NameW);
137 
138  return Ret;
139 }
unsigned int BOOL
Definition: ntddk_ex.h:94
wstring AsciiToUnicode(const char *AsciiString)
Definition: tools.cpp:220
#define TRACE(s)
Definition: solgame.cpp:4
static LPSTR pName
Definition: security.c:75
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
BOOL WINAPI DeletePrintProvidorW(PWSTR pName, PWSTR pEnvironment, PWSTR pPrintProviderName)

◆ DeletePrintProvidorW()

BOOL WINAPI DeletePrintProvidorW ( PWSTR  pName,
PWSTR  pEnvironment,
PWSTR  pPrintProviderName 
)

Definition at line 142 of file printproviders.c.

143 {
144  DWORD dwErrorCode;
145 
146  TRACE("DeletePrintProvidorW(%S, %S, %S)\n", pName, pEnvironment, pPrintProviderName);
147 
149  {
150  dwErrorCode = _RpcDeletePrintProvidor( pName, pEnvironment, pPrintProviderName );
151  }
153  {
154  dwErrorCode = RpcExceptionCode();
155  ERR("_RpcEnumPorts failed with exception code %lu!\n", dwErrorCode);
156  }
157  RpcEndExcept;
158 
159  SetLastError(dwErrorCode);
160  return (dwErrorCode == ERROR_SUCCESS);
161 }
#define RpcEndExcept
Definition: rpc.h:128
#define ERROR_SUCCESS
Definition: deptool.c:10
#define RpcTryExcept
Definition: rpc.h:126
#define RpcExceptionCode()
Definition: rpc.h:132
#define TRACE(s)
Definition: solgame.cpp:4
static LPSTR pName
Definition: security.c:75
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:85
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SetLastError(x)
Definition: compat.h:611
#define ERR(fmt,...)
Definition: debug.h:110
DWORD _RpcDeletePrintProvidor(WINSPOOL_HANDLE pName, WCHAR *pEnvironment, WCHAR *pPrintProviderName)
#define RpcExcept(expr)
Definition: rpc.h:127