diff options
| -rw-r--r-- | windns/src/windns/dnsconfiguration.cpp | 20 | ||||
| -rw-r--r-- | windns/src/windns/dnsconfiguration.h | 42 |
2 files changed, 62 insertions, 0 deletions
diff --git a/windns/src/windns/dnsconfiguration.cpp b/windns/src/windns/dnsconfiguration.cpp new file mode 100644 index 0000000000..ae0c3ffc2f --- /dev/null +++ b/windns/src/windns/dnsconfiguration.cpp @@ -0,0 +1,20 @@ +#include "stdafx.h" +#include "dnsconfiguration.h" +#include "windns/comhelpers.h" + +DnsConfiguration::DnsConfiguration(CComPtr<IWbemClassObject> instance) +{ + m_configId = dnshelpers::GetId(instance); + m_interfaceIndex = ComGetPropertyAlways(instance, L"InterfaceIndex").uintVal; + m_servers = dnshelpers::GetServers(instance); +} + +std::vector<std::wstring> *DnsConfiguration::servers() const +{ + return m_servers.get(); +} + +void DnsConfiguration::update(CComPtr<IWbemClassObject> instance) +{ + m_servers = dnshelpers::GetServers(instance); +} diff --git a/windns/src/windns/dnsconfiguration.h b/windns/src/windns/dnsconfiguration.h new file mode 100644 index 0000000000..1477d96a95 --- /dev/null +++ b/windns/src/windns/dnsconfiguration.h @@ -0,0 +1,42 @@ +#pragma once + +#include "windns/dnshelpers.h" +#include <cstdint> +#include <string> +#include <vector> +#include <memory> +#include <atlbase.h> +#include <wbemidl.h> + +class DnsConfiguration +{ +public: + + // instance = Win32_NetworkAdapterConfiguration. + DnsConfiguration(CComPtr<IWbemClassObject> instance); + + DnsConfiguration(const DnsConfiguration &) = delete; + DnsConfiguration &operator=(const DnsConfiguration &) = delete; + DnsConfiguration(DnsConfiguration &&) = default; + DnsConfiguration &operator=(DnsConfiguration &&) = default; + + const std::wstring &id() const + { + return m_configId; + } + + uint32_t interfaceIndex() const + { + return m_interfaceIndex; + } + + std::vector<std::wstring> *servers() const; + + void update(CComPtr<IWbemClassObject> instance); + +private: + + std::wstring m_configId; + uint32_t m_interfaceIndex; + dnshelpers::OptionalStringList m_servers; +}; |
