xref: /reactos/dll/win32/devmgr/devmgmt/DeviceNode.h (revision 3f976713)
1 #pragma once
2 #include "Node.h"
3 
4 enum IconOverlays
5 {
6     OverlayProblem = 1,
7     OverlayDisabled,
8     OverlayInfo
9 };
10 
11 class CDeviceNode : public CNode
12 {
13 private:
14     SP_DEVINFO_DATA m_DevinfoData;
15     DEVINST m_DevInst;
16     HDEVINFO m_hDevInfo;
17 
18     ULONG m_Status;
19     ULONG m_ProblemNumber;
20     int m_OverlayImage;
21 
22 public:
23     CDeviceNode(
24         _In_opt_ DEVINST Device,
25         _In_ PSP_CLASSIMAGELIST_DATA ImageListData
26         );
27 
28     ~CDeviceNode();
29 
30     CDeviceNode(
31         _In_ const CDeviceNode &Node
32         );
33 
34     virtual bool SetupNode();
35 
36     DEVINST GetDeviceInst() { return m_DevInst; }
37     int GetOverlayImage() { return m_OverlayImage; }
38 
39     bool HasProblem();
40     bool IsHidden();
41     bool CanDisable();
42     virtual bool IsDisabled();
43     bool IsStarted();
44     bool IsInstalled();
45     bool CanUninstall();
46     virtual bool CanUpdate() { return true; } // unimplemented
47 
48     bool EnableDevice(
49         _In_ bool Enable,
50         _Out_ bool &NeedsReboot
51         );
52 
53     bool UninstallDevice(
54         );
55 
56 private:
57     void Cleanup(
58         );
59 
60     bool SetFlags(
61         _In_ DWORD Flags,
62         _In_ DWORD FlagsEx
63         );
64 
65     bool RemoveFlags(
66         _In_ DWORD Flags,
67         _In_ DWORD FlagsEx
68         );
69 
70     DWORD GetFlags(
71         );
72 };
73 
74