561{
564
567
574 {
575 DPRINT1(
"Could not create the Pending-Install Event! (Status 0x%08lx)\n",
Status);
576 goto Failure;
577 }
578
579
580
581
582
589 {
590 DPRINT1(
"Could not create the List Event! (Status 0x%08lx)\n",
Status);
591 goto Failure;
592 }
593
598 {
599 DPRINT1(
"Could not create the List Mutex! (Status 0x%08lx)\n",
Status);
600 goto Failure;
601 }
603
607 {
608 DPRINT1(
"NtOpenKey('%wZ') failed (Status 0x%08lx)\n", &EnumU,
Status);
609 goto Failure;
610 }
611
615 {
616 DPRINT1(
"NtCreateKey('%wZ') failed (Status 0x%08lx)\n", &ServicesU,
Status);
617 goto Failure;
618 }
619
620
624 0,
625 0,
626 0,
632 {
633 DPRINT1(
"Failed to create the PnP event thread (Status 0x%08lx)\n",
Status);
635 goto Failure;
636 }
637
638
642 0,
643 0,
644 0,
646 phSetupInf,
650 {
651 DPRINT1(
"Failed to create the device installation thread (Status 0x%08lx)\n",
Status);
653 goto Failure;
654 }
655
657
658Failure:
660 {
663 }
665
669
673
677
681
685
687}
static ULONG NTAPI DeviceInstallThread(IN PVOID Parameter)
static ULONG NTAPI PnpEventThread(IN PVOID Parameter)
static HANDLE hServicesKey
static HANDLE hDeviceInstallListMutex
static HANDLE hNoPendingInstalls
static LIST_ENTRY DeviceInstallListHead
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
#define NT_SUCCESS(StatCode)
#define InitializeListHead(ListHead)
#define OBJ_CASE_INSENSITIVE
#define InitializeObjectAttributes(p, n, a, r, s)
NTSTATUS NTAPI NtCreateMutant(OUT PHANDLE MutantHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN BOOLEAN InitialOwner)
#define MUTANT_ALL_ACCESS
NTSYSAPI NTSTATUS NTAPI RtlCreateUserThread(_In_ PVOID ThreadContext, _Out_ HANDLE *OutThreadHandle, _Reserved_ PVOID Reserved1, _Reserved_ PVOID Reserved2, _Reserved_ PVOID Reserved3, _Reserved_ PVOID Reserved4, _Reserved_ PVOID Reserved5, _Reserved_ PVOID Reserved6, _Reserved_ PVOID Reserved7, _Reserved_ PVOID Reserved8)
NTSYSAPI NTSTATUS NTAPI NtOpenKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
NTSTATUS NtTerminateThread(IN HANDLE ThreadHandle OPTIONAL, IN NTSTATUS ExitStatus)
#define NtCurrentProcess()
#define REG_OPTION_NON_VOLATILE
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
NTSTATUS NTAPI NtCreateKey(OUT PHANDLE KeyHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex, IN PUNICODE_STRING Class OPTIONAL, IN ULONG CreateOptions, OUT PULONG Disposition OPTIONAL)
NTSTATUS NTAPI NtCreateEvent(OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState)
#define RTL_CONSTANT_STRING(s)