reactos/base/services
Joachim Henze 2e4713d711 [0.4.13][UMPNPMGR][USETUP] Fix the way device-install events are queued and dequeued. Fixes CORE-16103.
CORE-16103 "Network adapters sporadically fail to install with Code31 CM_PROB_FAILED_ADD"

This first and foremost reverts the guilty rev 0.4.12-dev-72-g 043a98ddd9
by porting back the fix 0.4.15-dev-1074-g ffc96d26ec

------------
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.
2021-01-15 03:24:40 +01:00
..
audiosrv [AUDIOSRV][BOOTDATA][INCLUDE][MMSYS] Rename RosAudioSrv to AudioSrv (#1826) 2019-08-16 19:11:04 +02:00
dcomlaunch [CMAKE] Use modules instead of shared libraries 2019-04-06 17:43:38 +02:00
dhcpcsvc [REACTOS] Fix SIZE_T related warnings 2019-08-15 14:20:00 +02:00
eventlog [EVENTLOG] Use the STDCALL calling convention for all remote procedure calls. 2017-11-12 15:54:22 +01:00
netlogon [NETLOGON] Add the netlogon service. 2019-05-29 13:37:20 +02:00
nfsd [3RDPARTY] Suppress MSVC printf format warnings in 3rd-party code 2019-08-15 15:24:12 +02:00
rpcss [RPCSS] Prevent the RPCSS service from getting stopped 2019-08-04 19:59:30 +02:00
schedsvc [CMAKE] Use modules instead of shared libraries 2019-04-06 17:43:38 +02:00
shsvcs [DLLs] Fix .spec files regarding OLE-specific exports. 2019-07-28 16:26:22 +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 Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
tcpsvcs [TCPSVCS] Remove hardcoded C drive letter (#800) 2018-08-28 12:45:03 +02:00
telnetd [NFSD] [TELNET] Remove the hardcoded directory paths C:\ReactOS 2018-08-22 19:40:11 +02:00
tftpd [TFTPD] Disable format-overflow warnings 2019-05-27 13:22:40 +02:00
umpnpmgr [0.4.13][UMPNPMGR][USETUP] Fix the way device-install events are queued and dequeued. Fixes CORE-16103. 2021-01-15 03:24:40 +01:00
w32time [W32TIME] The interval is specified in seconds, but we need milliseconds 2019-08-16 16:29:20 +02:00
wkssvc [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
wlansvc [FREETYPE][PORTCLS][RPCSS][SPOOLSV][STLPORT][USETUP][WLANSVC] Silence some clang-cl warnings. 2017-12-07 23:26:59 +01:00
wmisvc [WMISERV][WUAUSERV] Stop the service if the stop event creation fails. 2019-07-21 18:56:57 +02:00
wuauserv [WMISERV][WUAUSERV] Stop the service if the stop event creation fails. 2019-07-21 18:56:57 +02:00
CMakeLists.txt [W32TIME] Implement a rudimentary version of W32TimeSyncNow. CORE-13001 2019-07-07 12:45:03 +02:00