diff --git a/NetKVM/ProtocolService/ProtocolService.cpp b/NetKVM/ProtocolService/ProtocolService.cpp index 02fb2907..eccd5e8b 100644 --- a/NetKVM/ProtocolService/ProtocolService.cpp +++ b/NetKVM/ProtocolService/ProtocolService.cpp @@ -395,7 +395,7 @@ public: m_Filter.u.DeviceInterface.ClassGuid = GUID_DEVINTERFACE_NET; Register(&m_Filter); } - CM_NOTIFY_FILTER m_Filter; + CM_NOTIFY_FILTER m_Filter = {}; }; class CNetkvmDeviceFile @@ -768,7 +768,8 @@ public: class CProtocolServiceImplementation : public CServiceImplementation, - public CThreadOwner + public CThreadOwner, + public CDeviceNotificationOwner { public: CProtocolServiceImplementation() : @@ -812,6 +813,7 @@ protected: } virtual void ThreadProc() { + CNetworkDeviceNotification dn(*this); CoInitialize(NULL); do { @@ -856,7 +858,15 @@ private: CEvent m_ThreadEvent; CVirtioAdaptersArray m_Adapters; CMutex m_AdaptersMutex; - bool m_NoRestoreOnStop = false; + bool Notification(CM_NOTIFY_ACTION action, PCM_NOTIFY_EVENT_DATA data, DWORD dataSize) override + { + UNREFERENCED_PARAMETER(action); + UNREFERENCED_PARAMETER(data); + UNREFERENCED_PARAMETER(dataSize); + Log(" => Network change notification"); + m_ThreadEvent.Set(); + return true; + } private: NETKVMD_ADAPTER m_IoctlBuffer[256]; void SyncVirtioAdapters() diff --git a/NetKVM/ProtocolService/stdafx.h b/NetKVM/ProtocolService/stdafx.h index 471f49f9..40cc41be 100644 --- a/NetKVM/ProtocolService/stdafx.h +++ b/NetKVM/ProtocolService/stdafx.h @@ -17,6 +17,7 @@ #include #include #include +#include #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit //#include