* FILE: base/services/umpnpmgr/install.c
* PURPOSE: Device installer
* PROGRAMMER: Eric Kohl (eric.kohl@reactos.org)
- * Hervé Poussineau (hpoussin@reactos.org)
+ * Hervé Poussineau (hpoussin@reactos.org)
* Colin Finck (colin@reactos.org)
*/
HANDLE hInstallEvent = NULL;
HANDLE hNoPendingInstalls = NULL;
-SLIST_HEADER DeviceInstallListHead;
+/* Device-install event list */
+HANDLE hDeviceInstallListMutex;
+LIST_ENTRY DeviceInstallListHead;
HANDLE hDeviceInstallListNotEmpty;
WINAPI
DeviceInstallThread(LPVOID lpParameter)
{
- PSLIST_ENTRY ListEntry;
+ PLIST_ENTRY ListEntry;
DeviceInstallParams* Params;
BOOL showWizard;
while (TRUE)
{
- ListEntry = InterlockedPopEntrySList(&DeviceInstallListHead);
+ /* Dequeue the next oldest device-install event */
+ WaitForSingleObject(hDeviceInstallListMutex, INFINITE);
+ ListEntry = (IsListEmpty(&DeviceInstallListHead)
+ ? NULL : RemoveHeadList(&DeviceInstallListHead));
+ ReleaseMutex(hDeviceInstallListMutex);
if (ListEntry == NULL)
{