reactos/base/services
Hermès Bélusca-Maïto 902872fc0c [0.4.14][UMPNPMGR][USETUP] Fix the way device-install events are queued and dequeued. Fixes CORE-16103.
Dedicated to the hard work of Joachim Henze! xD

This reverts part of commit 043a98dd (see also commit b2aeafca).

Contrary to what I assumed in commit 043a98dd (and was also assumed in
the older commit b2aeafca), we cannot use the singled-linked lists to
queue and dequeue the PnP device-install events, because:

- the events must be treated from the oldest to the newest ones, for
  consistency, otherwise this creates problems, as shown by e.g. CORE-16103;

- the system singled-linked lists only offer access to the top of the
  list (like a stack) instead of to both the top and the bottom of the
  list, as would be required for a queue. Using the SLISTs would mean
  that only the newest-received events would be treated first, while the
  oldest (which were the first received) events would be treated last,
  and this is wrong.

Therefore one must use e.g. the standard doubly-linked list. Also, using
locked operations (insertion & removal) on the list of device-install
events is necessary, because these operations are done concurrently by
two different threads: PnpEventThread() and DeviceInstallThread().
Since the interlocked linked list functions are not available in user-mode,
we need to use instead locking access through e.g. a mutex.

the regression was introduced by 0.4.12-dev-72-g
043a98ddd9

fix cherry picked from commit 0.4.15-dev-1074-g
ffc96d26ec
2020-10-01 19:57:43 +02:00
..
audiosrv [AUDIOSRV][BOOTDATA][INCLUDE][MMSYS] Rename RosAudioSrv to AudioSrv (#1826) 2019-08-16 19:11:04 +02:00
dcomlaunch
dhcpcsvc [REACTOS] Fix SIZE_T related warnings 2019-08-15 14:20:00 +02:00
dnsrslvr [0.4.14][DNSRSLVR] Define NDEBUG in cache.c 2020-09-28 01:37:50 +02:00
eventlog
netlogon
nfsd [CMAKE] Replace custom functions to built-in ones 2020-04-16 15:59:38 +03:00
rpcss [CMAKE] Replace custom functions to built-in ones 2020-04-16 15:59:38 +03:00
schedsvc
shsvcs [SHSVCS] Don't call UnregisterWait from within the wait callback. 2020-04-22 12:37:26 +02:00
srvsvc [SRVSVC][WKSSVC] Set the stop pending status before stopping the services and stop the RPC listener on shutdown as well. 2019-07-21 18:56:59 +02:00
svchost
tcpsvcs
telnetd [NFSD][TELNETD][LIBTIRPC][MAN] Don't hardcode C:\ReactOS (#2334) 2020-02-13 18:03:35 +01:00
tftpd
umpnpmgr [0.4.14][UMPNPMGR][USETUP] Fix the way device-install events are queued and dequeued. Fixes CORE-16103. 2020-10-01 19:57:43 +02:00
w32time [W32TIME][BOOTDATA] Export SvchostEntry_W32Time() as an alias to W32TmServiceMain, and use the former as the service entry point specified in the registry, for Windows compatibility. 2020-04-09 23:22:40 +02:00
wkssvc [NETAPI32][WKSSVC] Implement NetGetJoinInformation using the workstation service 2019-12-15 19:53:23 +01:00
wlansvc [CMAKE] Replace custom functions to built-in ones 2020-04-16 15:59:38 +03:00
wmisvc
wuauserv
CMakeLists.txt [DNSRSLVR] Add the DNS Resolver Cache Service 2019-10-27 13:48:04 +01:00