Commit graph

88 commits

Author SHA1 Message Date
Serge Gautherie df81dadd9c
[UMPNPMGR] PNP_RegisterNotification(): Fix a string format (#6211)
Type was changed from DWORD to DWORD_PTR (as handle).
Addendum to commit 71df39b02
2023-12-23 21:50:47 +01:00
Eric Kohl 71df39b027 [IDL][SETUPAPI][UMPNPMGR] Improve PNP_RegisterNotification
- The 2nd parameter is the handle to the recipient.
- The 8th parameter is the callers process id.
2023-12-20 14:49:30 +01:00
Eric Kohl ec0a300f2b [UMPNPMGR] Broadcast a WM_DEVICECHANGE message after a device install was queued 2023-12-18 11:17:08 +01:00
Eric Kohl d8ba5920a2 [NTOS:PNP][UMPNPMGR] GUID_DEVICE_ENUMERATED should be a DeviceInstallEvent
- Move the GUID_DEVICE_ENUMERATED event from the TargetDeviceChangeEvent category to the DeviceInstallEvent category
- Create a new function that handles DeviceInstallEvent category events
2023-12-03 14:00:34 +01:00
Eric Kohl 30b9be047f [UMPNPMGR] Split the notification code by event category
- Move the TargetDeviceChangeEvent code into a separate function.
- Add a new function for the DeviceClassChangeEvent category.
2023-12-03 11:08:57 +01:00
Eric Kohl 01a8288d28 [UMPNPMGR] Move the pnp event thread to a separate file 2023-11-29 23:03:00 +01:00
Eric Kohl e1eb9e3620 [UMPNPMGR] PNP_Get(First/Next)LogConf: return proper tags for the resource list case 2023-06-29 18:06:02 +02:00
Eric Kohl 44a312478d [UMPNPMGR] OpenConfigurationKey: Open subkeys depending on the configuration type
- Boot and Basic Configurations are located in the LogConf subkey.
- Alloc and filtered Configurations are located in the Control subkey.
2023-06-28 23:15:26 +02:00
Timo Kreuzer b29b2682bf
[UMPNPMGR] Fix uninitialized variable (#5310)
The unhiding and guilty revision that was identified by @stasm by bisecting the
bootability of LiveCD was 0.4.15-dev-6050-g13e6cbc
As that was the symptom: "We could not longer boot livecd". CORE-18986
2023-06-01 19:44:05 +09:00
Eric Kohl 2626c724e9 [UMPNPMGR] Replace some magic values 2023-05-29 11:58:09 +02:00
Eric Kohl 024daea0af [UMPNPMGR] Check ulFlags in PNP_GetGlobalState
Return CR_INVALID_FLAG if ulFlags is not zero.
2023-05-29 09:54:31 +02:00
Eric Kohl 13e6cbcafa [UMPNPMGR] Check for interactive caller in PNP_ReportLogOn
Do not run device install when a non-interactive user logs on.
2023-05-29 09:38:31 +02:00
George Bișoc cd1070dfc4
[UMPNPMGR] Create a security descriptor for PnP installation device event 2022-05-06 10:09:51 +02:00
Eric Kohl 74efe979a8 [UMPNPMGR] PNP_CreateDevInst: Create a device node for the device to be installed 2022-04-24 12:56:42 +02:00
Eric Kohl a7a222b52d [UMPNPMGR] PNP_CreateDevInst: Convert a phantom device to a normal device 2022-04-23 16:59:47 +02:00
Eric Kohl 33a0c66f30 [UMPNPMGR] PNP_CreateDevInst: Do not create a normal device if it is already present 2022-04-23 15:35:45 +02:00
Stanislav Motylkov 27453fb759
[UMPNPMGR] Fix hang when installing devices. Addendum to 0296fce00. 2022-04-20 02:38:41 +03:00
Eric Kohl 0296fce00e [UMPNPMGR] GenerateDeviceID must fail, if pszDeviceID contains backslashes 2022-04-19 23:14:23 +02:00
Eric Kohl f3ac86713d [UMPNPMGR] PNP_CreateDevInst: A phantom device can only be created if the device did not exist before 2022-04-19 00:09:54 +02:00
Eric Kohl 8897a890c9 [UMPNPMGR] PNP_CreateDevInst: Support the creation of phantom devices 2022-04-18 19:53:18 +02:00
Eric Kohl f63e8f8a03 [UMPNPMGR] Move device id generation into a separate function and limit device instance number 2022-04-18 14:14:11 +02:00
Eric Kohl 426687becf [UMPNPMGR] PNP_CreateDevInst: Do not create a new device while generating a device id 2022-04-18 12:59:41 +02:00
Eric Kohl 11886ebec2 [UMPNPMGR] PNP_GetRelatedDeviceInstance must return the root device as the parent of non-existing devices 2022-04-18 09:48:03 +02:00
Eric Kohl 7cc5163bfa [UMPNPMGR] Add checks to PNP_GetRelatedDeviceInstance
PNP_GetRelatedDeviceInstance must fail if we try to retrieve the parent or a sibling of the root device.
2022-04-17 13:52:59 +02:00
Eric Kohl 691a739b02 [UMPNPMGR] Improve UpdateServiceStatus()
- Set dwCheckPoint
- Set dwControlAccepted depending on the service state
2022-03-20 17:21:45 +01:00
Eric Kohl b0a73746cd [UMPNPMGR][SETUPAPI] Fix notification handles in PNP_RegisterNotification and PNP_UnregisterNotification
- Notification handles must be context handles
- Register and unregister notification targets
2022-03-20 14:59:30 +01:00
Hermès Bélusca-Maïto 9393fc320e
[FORMATTING] Remove trailing whitespace. Addendum to 34593d93.
Excluded: 3rd-party code (incl. wine) and most of the win32ss.
2021-09-13 03:52:22 +02:00
Eric Kohl 13073e1acb [UMPNPMGR] PNP_GetDeviceStatus: Add status checks as documented in MS-PNPR
CORE-17527
2021-06-22 00:02:56 +02:00
Eric Kohl 830e15b622 [UMPNPMGR] Add missing parameter checks to PNP_GetDeviceStatus 2021-06-21 21:33:24 +02:00
Eric Kohl 0f27609813 [UMPNPMGR] Fix DPRINT in PNP_GetDeviceStatus() 2021-04-24 17:06:08 +02:00
Eric Kohl b24f463a33 [UMPNPMGR] Start the device in SetupDeviceInstance 2021-04-24 17:04:11 +02:00
Eric Kohl d5b20cb118 [UMPNPMGR] Implement PNP_SetDeviceProblem
CORE-17527
2021-04-24 11:59:22 +02:00
Mark Jansen 5028c3adec
[UMPNPMGR] Fix remaining length calculation 2021-04-03 01:43:48 +02:00
Victor Perevertkin 16173c0798
[UMPNPMGR] Fix GCC build
Addendum to 420c4a7abf
2021-03-19 09:14:05 +03:00
Victor Perevertkin 420c4a7abf
[UMPNPMGR] Install drivers for all devices available on boot
Don't wait for their events to appear, just retrieve the list and
install drivers. This fixes the installation of manually reported device
nodes

CORE-17212 CORE-17398
2021-03-19 08:59:42 +03:00
Victor Perevertkin abbc5ba45a
[UMPNPMGR][USETUP] Use PlugPlayControlStartDevice in usetup and umpnpmgr
Instead of PlugPlayControlResetDevice, PlugPlayControlStartDevice should
be used for a newly installed device.
For usetup, add a device status check before starting attempt, so we're
not touching devices which are already started.

CORE-17463 CORE-17490
2021-03-16 03:17:58 +03:00
Victor Perevertkin 029accdcf7
[NDK] Change the data structure for PlugPlayControlResetDevice control class
PlugPlayControlResetDevice shares the input structure with several other
control classes.
Source: ProcessHacker sources e9c8121f41/ntpnpapi.h
2021-03-16 03:17:42 +03:00
Victor Perevertkin ff13301eb2
[UMPNPMGR] Set the data type in all cases of PNP_GetDeviceRegProp
CORE-14187
2020-12-06 19:48:38 +03:00
Hervé Poussineau b483be4af2 [UMPNPMGR] Remove invalid prototype of inline function
This fixes eede1b9b7a.
2020-12-01 18:51:42 +01:00
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
Eric Kohl 80b139d726 [UMPNPMGR] Start work on PNP_GetNextResDes() 2020-05-21 21:51:06 +02:00
Eric Kohl 38494d0997 [UMPNPMGR] Improve some debug messages 2020-05-20 19:56:30 +02:00
Eric Kohl 4246b64dcb [UMPNPMGR] Implement PNP_GetFirstLogConf and PNP_GetNextLogConf (WIP)
- PNP_GetFirstLogConf only works for resources lists.
- PNP_GetNextLogConf does not return a valid tag yet.
2020-05-10 20:46:41 +02:00
Serge Gautherie 2712762538
[UMPNPMGR] rpcserver.c: Fix debug message copypastas (#2426)
Addendum to db02f87d.
2020-03-09 16:00:53 +01:00
Eric Kohl b39c55e5d2 [UMPNPMGR] Implement PNP_DisableDevInst() 2020-03-08 10:36:02 +01:00
Eric Kohl db02f87d7b [UMPNPMGR] Fix indentation and improve debug messages 2020-03-08 10:30:25 +01:00
Eric Kohl c11491b750 [UMPNPMGR] Improve PNP_DeviceInstanceAction
- Rename parameters according to [MS_PNPR] (no longer available for download).
- Remove unsupported PNP_DEVINST_MOVE and PNP_DEVINST_DISABLE actions.
- Implement most of the PNP_DEVINST_SETUP action.
2020-02-23 10:44:43 +01:00
Eric Kohl 774a4252b9 [UMPNPMGR] Improve some DPRINTS and PNP_CreateKey
PNP_CreateKey creates the 'Device Parameters' key for a given device in the enum key
2020-02-16 22:08:34 +01:00
Eric Kohl 00a47324f2 [UMPNPMGR] Replace magic values and improve DPRINTS in exported function 2020-02-16 16:29:44 +01:00
Eric Kohl f9160f7637 [UMPNPMGR] Implement PNP_RegisterDriver() 2020-02-16 11:13:10 +01:00