The code expects synchronous behaviour here, so until a better solution exists, IoSynchronousInvalidateDeviceRelations() is going to be used.

This fixes the "Loading ndis.sys" problems.

Thanks to Dmitry Gorbachev, confirmed by Herve Poussineau.
See issue #1875 for more details.

svn path=/trunk/; revision=24798
This commit is contained in:
Aleksey Bragin 2006-11-22 10:15:51 +00:00
parent 0b5c955898
commit 48953bfa71

View file

@ -43,6 +43,13 @@ IopInvalidateDeviceRelations(
IN PDEVICE_OBJECT DeviceObject,
IN PVOID InvalidateContext);
VOID
NTAPI
IoSynchronousInvalidateDeviceRelations(
IN PDEVICE_OBJECT DeviceObject,
IN DEVICE_RELATION_TYPE Type);
/* FUNCTIONS *****************************************************************/
PDEVICE_NODE
@ -144,7 +151,9 @@ IopStartDevice(
if (IopDeviceNodeHasFlag(DeviceNode, DNF_NEED_ENUMERATION_ONLY))
{
DPRINT("Device needs enumeration, invalidating bus relations\n");
IoInvalidateDeviceRelations(DeviceNode->PhysicalDeviceObject, BusRelations);
/* Invalidate device relations synchronously
(otherwise there will be dirty read of DeviceNode) */
IoSynchronousInvalidateDeviceRelations(DeviceNode->PhysicalDeviceObject, BusRelations);
IopDeviceNodeClearFlag(DeviceNode, DNF_NEED_ENUMERATION_ONLY);
}
}