Commit graph

24 commits

Author SHA1 Message Date
Hermès Bélusca-Maïto ffc96d26ec
[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.
2020-10-01 01:52:09 +02:00
Bișoc George eede1b9b7a
[UMPNPMGR] Implement registry functions for SuppressUI and SuppressNewHWUI handling. (#1683)
CORE-15897

Co-authored-by: Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
2019-07-21 19:02:53 +02:00
Eric Kohl 6866c0aede [NTOSKRNL][USETUP][UMPNPMGR] Pass user response data to NtPlugPlayControl(PlugPlayControlUserResponse).
- Windows requires 16 bytes of response data.
- Add the PLUGPLAY_CONTROL_USER_RESPONSE_DATA type.
- Usetup and Umpnpmgr must fail if NtPlugPlayControl(PlugPlayControlUserResponse) does not return STATUS_SUCCESS.
2019-06-12 13:48:27 +02:00
Eric Kohl fe3ae24369 [UMPNPMGR] Split the monolithic monster: service, rpc and installer. 2019-05-30 11:48:29 +02:00
Eric Kohl e71a94da20 [UMPNPMGR] PNP_QueryArbitratorFreeData and PNP_QueryArbitratorFreeSize don't do anything useful today. 2019-05-30 01:02:09 +02:00
Eric Kohl 66e4dbc7ed [UMPNPMGR] PNP_GetDeviceList: Implement the enumeration of service device instances. 2018-12-31 21:38:26 +01:00
Eric Kohl 5da008c338 [UMPNPMGR] PNP_GetDeviceListSize: Implement the buffer size calculation for the enumeration of services instances. 2018-12-31 16:15:16 +01:00
Eric Kohl ccb8c906b0 [UMPNPMGR] PNP_GetDeviceList/PNP_GetDeviceListSize: Move device relations code into separate functions. 2018-12-31 11:21:17 +01:00
Eric Kohl 6183774efa [UMPNPMGR] PNP_GetDeviceList: Implement the enumeration of all device instances. 2018-12-30 17:15:40 +01:00
Eric Kohl 969de9062c [UMPNPMGR] PNP_GetDeviceListSize: Implement the buffer size calculation for a list of all device instances. 2018-12-30 14:43:10 +01:00
Eric Kohl 4f37d96857 [UMPNPMGR] PNP_GetDeviceList: Implement the enumeration of device instances for a given enumerator. 2018-12-30 12:58:30 +01:00
Eric Kohl 7c66247343 [UMPNPMGR] PNP_GetDeviceListSize: Implement the buffer size calculation for given enumerators and take care of the terminating double Unicode null character. 2018-12-30 09:06:59 +01:00
Eric Kohl a9b88efa7c [UMPNPMGR] PNP_GetDeviceList / PNP_GetDeviceListSize: Implement the buffer size calculation and device instance enumeration for a given enumerator and device name. 2018-12-29 22:13:32 +01:00
Hermès Bélusca-Maïto 2955ed91ab
[UMPNPMGR] Use HeapReAlloc() to reallocate the PnP events buffer. Fix a memory leak in DeviceInstallThread(). 2018-12-23 14:09:17 +01:00
Hermès Bélusca-Maïto 9e18da43fe
[UMPNPMGR] Minor formatting, and enable a DPRINT1 in case NtGetPlugPlayEvent() fails and the PnpEventThread() thread unexpectedly terminates due to that. 2018-12-23 14:09:16 +01:00
Hermès Bélusca-Maïto 043a98ddd9
[UMPNPMGR] Re-enable the usage of Interlocked Singly-Linked lists.
Using locked operations (insertion & removal) on the list of queued
devices installations is necessary, because these operations are done
concurrently by two different threads: PnpEventThread() and
DeviceInstallThread().

Addendum to commit b2aeafca (r24365).
2018-12-15 20:19:32 +01:00
Hermès Bélusca-Maïto 745fa54506
[UMPNPMGR] Fix a typo. 2018-12-15 20:19:31 +01:00
Eric Kohl ce15c84309 [UMPNPMGR] Implement PNP_DetectResourceConflict(). 2018-11-01 14:50:08 +01:00
Eric Kohl 934104d73f [UMPNPMGR] Simplify PNP_GetDeviceRegProp 2018-08-20 00:55:03 +02:00
Eric Kohl 9d26058a8e [UMPNPMGR] Partially implement ReenumerateDeviceInstance which is needed by the Lenovo T400 network driver installer 2018-08-12 22:26:22 +02:00
Eric Kohl 4ffa0a2e55 [NTOSKRNL][NDK][UMPNPMGR] Define and use PLUGPLAY_CONTROL_PROPERTY_DATA.Properties values
NDK: Define PLUGPLAY_CONTROL_PROPERTY_DATA.Properties and PLUGPLAY_CONTROL_DEVICE_RELATIONS_DATA.Relations values.

NTOSKRNL: Map PLUGPLAY_CONTROL_PROPERTY_DATA.Properties values to IoGetDeviceProperty properties and add (dummy) code for unsupported cases.

UMPNPMGR: Use PLUGPLAY_CONTROL_PROPERTY_DATA.Properties values in PNP_GetDeviceRegProp.
2018-07-15 15:57:57 +02:00
Serge Gautherie 5ca037d5f6 [UMPNPMGR] Fix a Clang-Cl warning about "CSConfigFlags"
"warning: logical not is only applied to the left hand side of this comparison [-Wlogical-not-parentheses]"

CORE-14306
2018-05-04 22:02:24 +02:00
Eric Kohl 2b5c4bd2c7 [UMPNPMGR] Add missing status mappings to NtStatusToCrError.
CORE-13944
2017-11-12 12:51:19 +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/services/umpnpmgr/umpnpmgr.c (Browse further)