Author: ekohl
Date: Sat Sep 25 21:49:15 2010
New Revision: 48896
URL:
http://svn.reactos.org/svn/reactos?rev=48896&view=rev
Log:
[NTOSKRNL]
IoRegisterPlugPlayNotification: Do not fail if no Interface can be found for the given
GUID. Just do not call the Callback-Routine in this case. The Interface could be created
later.
Modified:
trunk/reactos/ntoskrnl/io/pnpmgr/pnpnotify.c
Modified: trunk/reactos/ntoskrnl/io/pnpmgr/pnpnotify.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/pnpmgr/pnpnoti…
==============================================================================
--- trunk/reactos/ntoskrnl/io/pnpmgr/pnpnotify.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/io/pnpmgr/pnpnotify.c [iso-8859-1] Sat Sep 25 21:49:15 2010
@@ -290,36 +290,30 @@
NULL, /* PhysicalDeviceObject OPTIONAL */
0, /* Flags */
&SymbolicLinkList);
- if (!NT_SUCCESS(Status))
- {
- DPRINT("IoGetDeviceInterfaces() failed with status 0x%08lx\n",
- Status);
- ExFreePoolWithTag(Entry, TAG_PNP_NOTIFY);
- ObDereferenceObject(DriverObject);
- return Status;
- }
-
- /* Enumerate SymbolicLinkList */
- NotificationInfos.Version = 1;
- NotificationInfos.Size = sizeof(DEVICE_INTERFACE_CHANGE_NOTIFICATION);
- RtlCopyMemory(&NotificationInfos.Event,
- &GUID_DEVICE_INTERFACE_ARRIVAL,
- sizeof(GUID));
- RtlCopyMemory(&NotificationInfos.InterfaceClassGuid,
- EventCategoryData,
- sizeof(GUID));
- NotificationInfos.SymbolicLinkName = &SymbolicLinkU;
-
- for (SymbolicLink = SymbolicLinkList;
- *SymbolicLink;
- SymbolicLink += wcslen(SymbolicLink) + 1)
- {
- RtlInitUnicodeString(&SymbolicLinkU, SymbolicLink);
- DPRINT("Calling callback routine for %S\n", SymbolicLink);
- (*CallbackRoutine)(&NotificationInfos, Context);
- }
-
- ExFreePool(SymbolicLinkList);
+ if (NT_SUCCESS(Status))
+ {
+ /* Enumerate SymbolicLinkList */
+ NotificationInfos.Version = 1;
+ NotificationInfos.Size = sizeof(DEVICE_INTERFACE_CHANGE_NOTIFICATION);
+ RtlCopyMemory(&NotificationInfos.Event,
+ &GUID_DEVICE_INTERFACE_ARRIVAL,
+ sizeof(GUID));
+ RtlCopyMemory(&NotificationInfos.InterfaceClassGuid,
+ EventCategoryData,
+ sizeof(GUID));
+ NotificationInfos.SymbolicLinkName = &SymbolicLinkU;
+
+ for (SymbolicLink = SymbolicLinkList;
+ *SymbolicLink;
+ SymbolicLink += wcslen(SymbolicLink) + 1)
+ {
+ RtlInitUnicodeString(&SymbolicLinkU, SymbolicLink);
+ DPRINT("Calling callback routine for %S\n", SymbolicLink);
+ (*CallbackRoutine)(&NotificationInfos, Context);
+ }
+
+ ExFreePool(SymbolicLinkList);
+ }
}
Entry->PnpNotificationProc = CallbackRoutine;