[DEVMGR]
authorGed Murphy <gedmurphy@reactos.org>
Wed, 17 Jun 2015 08:38:34 +0000 (08:38 +0000)
committerGed Murphy <gedmurphy@reactos.org>
Wed, 17 Jun 2015 08:38:34 +0000 (08:38 +0000)
- Make sure the device nodes use the latest device status'

svn path=/trunk/; revision=68169

reactos/dll/win32/devmgr/devmgmt/DeviceView.cpp
reactos/dll/win32/devmgr/devmgmt/Node.cpp

index 258055b..f0c3c2d 100644 (file)
@@ -34,7 +34,7 @@ struct RefreshThreadData
 {
     CDeviceView *This;
     BOOL ScanForChanges;
-BOOL UpdateView;
+    BOOL UpdateView;
 };
 
 
index 2167f83..94f7732 100644 (file)
@@ -75,32 +75,87 @@ CNode::HasProperties()
 bool
 CNode::IsHidden()
 {
-    return ((m_Status & DN_NO_SHOW_IN_DM) != 0);
+    CONFIGRET cr;
+    cr = CM_Get_DevNode_Status_Ex(&m_Status,
+                                  &m_ProblemNumber,
+                                  m_DevInst,
+                                  0,
+                                  NULL);
+    if (cr == CR_SUCCESS)
+    {
+        return ((m_Status & DN_NO_SHOW_IN_DM) != 0);
+    }
+
+    return false;
 }
 
 bool
 CNode::CanDisable()
 {
-    return (m_NodeType == NodeDevice && ((m_Status & DN_DISABLEABLE) != 0));
+    CONFIGRET cr;
+    cr = CM_Get_DevNode_Status_Ex(&m_Status,
+                                  &m_ProblemNumber,
+                                  m_DevInst,
+                                  0,
+                                  NULL);
+    if (cr == CR_SUCCESS)
+    {
+        return (m_NodeType == NodeDevice && ((m_Status & DN_DISABLEABLE) != 0));
+    }
+
+    return false;
 }
 
 bool
 CNode::IsDisabled()
 {
-    return ((m_ProblemNumber & (CM_PROB_DISABLED | CM_PROB_HARDWARE_DISABLED)) != 0);
+    CONFIGRET cr;
+    cr = CM_Get_DevNode_Status_Ex(&m_Status,
+                                  &m_ProblemNumber,
+                                  m_DevInst,
+                                  0,
+                                  NULL);
+    if (cr == CR_SUCCESS)
+    {
+        return ((m_ProblemNumber & (CM_PROB_DISABLED | CM_PROB_HARDWARE_DISABLED)) != 0);
+    }
+
+    return false;
 }
 
 bool
 CNode::IsStarted()
 {
-    return ((m_Status & DN_STARTED) != 0);
+    CONFIGRET cr;
+    cr = CM_Get_DevNode_Status_Ex(&m_Status,
+                                  &m_ProblemNumber,
+                                  m_DevInst,
+                                  0,
+                                  NULL);
+    if (cr == CR_SUCCESS)
+    {
+        return ((m_Status & DN_STARTED) != 0);
+    }
+
+    return false;
 }
 
 bool
 CNode::IsInstalled()
 {
-    return ((m_Status & DN_HAS_PROBLEM) != 0 ||
-            (m_Status & (DN_DRIVER_LOADED | DN_STARTED)) != 0);
+    CONFIGRET cr;
+    cr = CM_Get_DevNode_Status_Ex(&m_Status,
+                                  &m_ProblemNumber,
+                                  m_DevInst,
+                                  0,
+                                  NULL);
+    if (cr == CR_SUCCESS)
+    {
+        return ((m_Status & DN_HAS_PROBLEM) != 0 ||
+                (m_Status & (DN_DRIVER_LOADED | DN_STARTED)) != 0);
+    }
+
+    return false;
 }