Add a macro to check for a valid PDO and use it in IoOpenDeviceRegistryKey().
Requested by sir_richard.
svn path=/trunk/; revision=47828
(_DeviceTreeTraverseContext)->Action = (_Action); \
(_DeviceTreeTraverseContext)->Context = (_Context); }
+/*
+ * BOOLEAN
+ * IopIsValidPhysicalDeviceObject(
+ * IN PDEVICE_OBJECT PhysicalDeviceObject);
+ */
+#define IopIsValidPhysicalDeviceObject(PhysicalDeviceObject) \
+ (((PEXTENDED_DEVOBJ_EXTENSION)PhysicalDeviceObject) && \
+ (((PEXTENDED_DEVOBJ_EXTENSION)PhysicalDeviceObject->DeviceObjectExtension)->DeviceNode) && \
+ (((PEXTENDED_DEVOBJ_EXTENSION)PhysicalDeviceObject->DeviceObjectExtension)->DeviceNode->Flags & DNF_ENUMERATED))
+
//
// Device List Operations
//
}
else
{
- DeviceNode = IopGetDeviceNode(DeviceObject);
- if (!DeviceNode)
+ if (!IopIsValidPhysicalDeviceObject(DeviceObject))
return STATUS_INVALID_DEVICE_REQUEST;
+ DeviceNode = IopGetDeviceNode(DeviceObject);
KeyNameLength += sizeof(EnumKeyName) - sizeof(UNICODE_NULL) +
DeviceNode->InstancePath.Length;
}