Commit graph

29 commits

Author SHA1 Message Date
Eric Kohl
f5346cbc1b [ADVAPI32][IDL][SERVICES] Implement I_ScValidatePnPService
This is actually a Vista+ function, but we need it enable umpnpmgr.dll to notify services of device events. Up until WinXP it was possible to make direct calls to the service manager by umpnpmgr.dll because umpnpmgr.dll was loaded into the service manager process. From Vista onwards umpnpmgr.dll is run as a separate service host process. And since ReactOS always ran umpnpmgr.dll as a separate process, we have to use the Vista RPC functions to notify services.
2023-12-31 15:33:19 +01:00
Joachim Henze
b66389c140 [SERVICES] Restore Herves name and readd g_dwServiceBits CORE-18071
Partial revert of 0.4.15-dev-4274-g d31a557237

As hbelusca explained the special character will warn only
once for each non-UTF8-file and not every time, unlike I anticipated.

The g_dwServiceBits is not important right now, but hpoussin expects it
to be a preparation step for making the stuff passed to the
function SetServiceBits() persistent
https://docs.microsoft.com/en-us/windows/win32/api/lmserver/nf-lmserver-setservicebits
for (yet unknown) features to come.
2022-03-20 20:52:53 +01:00
Joachim Henze
d31a557237 [SERVICES] Tweak the binary size a bit CORE-18071
Fixes some typos like "alread"->"already"
and kill g_dwServiceBits in rpcserver.cpp
and omit points and exclamation marks at end of prints.

On GCC8.4.0dbg RosBE2.2.1 this shrinks the file for me from 210.432 to 209.920
The file is loaded many times into memory, therefore
optimization pays off here at runtime memory consumption.

Also shorten to H. Poussineau in the header sections,
to stop git from displaying diff in that line on each review
due to that special char.
2022-03-20 20:12:56 +01:00
Eric Kohl
4cae349811 [ADVAPI32][SERVICES] Use the context handle to encrypt and decrypt service passwords 2021-07-17 16:26:16 +02:00
Jérôme Gardou
e470b58376 [REACTOS] Explicitly link against pseh & include pseh headers in a few places 2021-04-28 13:10:23 +02:00
Eric Kohl
26e1afaffc [SERVICES] Improvements to registry control sets
- Add a function that creates a new control set and deletes unused control sets in case of a successful boot.
- Add a stub function that will soon switch to the last known good control set in case of an unsuccessful boot.
2019-08-10 14:24:11 +02:00
Pierre Schweitzer
1a9b9800b1
[SERVICES] Implement ScmGenerateServiceTag and call it on service creation
This allows assigning an unique ServiceTag to each Win32 service
2018-12-30 14:27:04 +01:00
Pierre Schweitzer
90f5e6b6c3
[SERVICES] Implement RI_ScQueryServiceTagInfo 2018-12-30 14:27:03 +01:00
Pierre Schweitzer
dfaee51f98
[SERVICES] Define the RI_ScQueryServiceTagInfo RPC call
All the definitions are taken from ProcessHacker:
https://github.com/processhacker/processhacker/blob/master/phnt/include/subprocesstag.h
2018-12-30 14:26:57 +01:00
Eric Kohl
1820aa8fe6 [SERVICES] Revert f6d81f22 because it breaks the advapi32 LockServiceDatabase test. 2018-10-05 09:41:50 +02:00
Eric Kohl
f6d81f2257 [SERVICES] Fix timeout when a service is stopped
RSetServiceStatus: Send the stop command for the dispatcher thread from a separate thread.

Fixes CORE-15064
2018-10-05 08:41:23 +02:00
Eric Kohl
04683639f0 [SERVICES] RChangeServiceConfigW / RCreateServiceW: Use SecureZeroMemory to wipe clear-text passwords after use. 2018-09-28 17:51:12 +02:00
Hermès Bélusca-Maïto
bf164caae8
[SERVICES] Simplify the implementation of RGetServiceDisplayNameA/W() and RGetServiceKeyNameA/W().
Also comment about the observed behaviour of the returned number of "characters"
returned by the ANSI versions of these APIs (which is tested by advapi32_winetest:service).

[ADVAPI32:SCM] Add a comment concerning wide characters vs. bytes mismatch.
2018-09-23 18:09:10 +02:00
Eric Kohl
5e2c4657ca [ADVAPI32][SERVICES] Add (dummy) password encryption/decryption functions to CreateServiceA/W and ChangeServiceConfigA/W in order to prepare to pass encrypted passwords to the service manager 2018-09-17 16:34:48 +02:00
Hermès Bélusca-Maïto
9d43950db7
[SERVICES] Add basic support for setting lpServiceStartName via RChangeServiceConfigW(). 2018-09-17 01:22:59 +02:00
Hermès Bélusca-Maïto
a987856e71
[SERVICES] Minor code style fixes; replace wcslen(xxx) ==/!= 0 and strcpy(string, 'empty-string') calls. 2018-09-17 01:22:55 +02:00
Hermès Bélusca-Maïto
cccf26da74
[SERVICES] Re-implement RChangeServiceConfigA() around RChangeServiceConfigW(), much as what is done for RCreateServiceA(). 2018-09-09 23:24:04 +02:00
Hermès Bélusca-Maïto
d6e577ced9
[SERVICES] RChangeServiceConfigW: Check valid usage of lpdwTagId when lpLoadOrderGroup is not specified. 2018-09-09 23:23:55 +02:00
Serge Gautherie
e3a1c2c81b [SERVICES] RChangeServiceConfig2A(): Zero-Initialize InfoW variable
This lets forward NULL Info.psd/Info.psd->lpDescription/Info.psfa,
instead of an uninitialized value.

CORE-14521
2018-08-21 17:36:46 +02:00
Eric Kohl
66981e1b07 [SERVICES] Keep a global service bits variable that combines the service bits of all running services 2018-07-23 01:48:49 +02:00
Eric Kohl
91a5ee334d [SERVICES] Add a checks for vaild info level to RChangeServiceConfig2A/W and RQueryServiceConfig2A/W
CORE-14837
2018-07-22 12:45:23 +02:00
Eric Kohl
fd090c6ca1 [SERVICES] Implement RI_ScSetServiceBitsA/W
- RI_ScSetServiceBitsA: Just call RI_ScSetServiceBitsW.
- RI_ScSetServiceBitsW: Store the service bits in the service list entry.
TODO: Merge all service bits in a global variable and pass it to the server service. Maybe use netapi.I_NetServerSetServiceBits(Ex)?
2018-05-01 21:33:37 +02:00
Eric Kohl
9f0c54fcd3 [SC][SERVICES] Support SERVICE_CONTROL_PARAMCHANGE and SERVICE_CONTROL_NETBIND* control codes 2018-02-25 11:07:41 +01:00
Hermès Bélusca-Maïto
c6d65fec69
[SERVICES] Use safe-string routines in some places, and do not hardcode buffer lengths. 2018-02-25 00:50:01 +01:00
Eric Kohl
1dfbed9c3d [SERVICES][ADVAPI32] Fix the broken service stop sequence
services\database.c:
- Refactor ScmControlService() so that it can be used to send the dispatcher loop stop command.
- Separate the code to decrement the image run counter from the service image cleanup code.

services\rpcserver.c:
- RSetServiceStatus(): Stop the dispatcher loop when the image run counter is zero and remove the service image after that.

advapi32\service\sctrl.c:
- Do not terminate the service dispatcher loop when the last service is being stopped. Wait for an explicit dispatcher stop command (empty service name).

CORE-12413
2018-02-24 11:14:05 +01:00
Eric Kohl
e917471e04 [SERVICES] Fix the initial service status
- The initial dwWin32ExitCode for a disabled service is ERROR_SERVICE_DISABLED and ERROR_SRVICE_NEVER_STARTED for non-disabled services.
- The initial dwWaitHint is 2000 (2 seconds) for (user-mode) services and 0 for drivers.
- Move all driver-related code to driver.c.
2018-02-12 14:58:02 +01:00
Eric Kohl
2d69520595 [SERVICES] Do not delete running services.
CORE-14260
2018-01-28 00:57:58 +01:00
Eric Kohl
7dd8ebcbbd [SERVICES] Use the STDCALL calling convention for all remote procedure calls. 2017-11-12 14:04:22 +01:00
Colin Finck
c2c66aff7d Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
Renamed from reactos/base/system/services/rpcserver.c (Browse further)