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