ReactOS  0.4.14-dev-376-gaedba84
init.c
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS Print Spooler Service
3  * LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
4  * PURPOSE: Various initialization functions
5  * COPYRIGHT: Copyright 2015-2017 Colin Finck (colin@reactos.org)
6  */
7 
8 #include "precomp.h"
9 
10 DWORD
12 {
13  DWORD dwErrorCode;
14 
15  // Call SpoolerInit in the security context of the client.
16  // This delay-loads spoolss.dll in the user context and all further calls to functions in spoolss.dll will be done in the user context as well.
17  dwErrorCode = RpcImpersonateClient(NULL);
18  if (dwErrorCode != ERROR_SUCCESS)
19  {
20  ERR("RpcImpersonateClient failed with error %lu!\n", dwErrorCode);
21  return dwErrorCode;
22  }
23 
24  if (!SpoolerInit())
25  dwErrorCode = GetLastError();
26 
28  return dwErrorCode;
29 }
#define ERROR_SUCCESS
Definition: deptool.c:10
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
DWORD _RpcSpoolerInit(VOID)
Definition: init.c:11
smooth NULL
Definition: ftsmooth.c:416
RPC_STATUS WINAPI RpcRevertToSelf(void)
Definition: rpc_binding.c:1460
unsigned long DWORD
Definition: ntddk_ex.h:95
#define ERR(fmt,...)
Definition: debug.h:109
RPC_STATUS WINAPI RpcImpersonateClient(RPC_BINDING_HANDLE BindingHandle)
Definition: rpc_binding.c:1053
BOOL WINAPI SpoolerInit(VOID)
Definition: main.c:248