HostDnsServiceWin.cpp revision dbbd0cae65188dffbd927bdde2d88cbeec2e26da
18b1f1bb3429f8bfc1a52cfaeb2445e9fb1f55cdvboxsync/* -*- indent-tabs-mode: nil; -*- */
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsyncstatic inline int registerNotification(const HKEY& hKey, HANDLE& hEvent)
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync ("Failed to register event on the key. Please debug me!"),
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsyncHostDnsServiceWin::HostDnsServiceWin():HostDnsMonitor(true), m(NULL)
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync m->haDataEvent[DATA_DNS_UPDATE_EVENT] = CreateEvent(NULL,
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync AssertReleaseMsg(m->haDataEvent[DATA_DNS_UPDATE_EVENT],
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync ("Failed to create event for DNS event (%d)\n", GetLastError()));
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync m->haDataEvent[DATA_SHUTDOWN_EVENT] = CreateEvent(NULL,
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync AssertReleaseMsg(m->haDataEvent[DATA_SHUTDOWN_EVENT],
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync ("Failed to create event for Shutdown signal (%d)\n", GetLastError()));
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync TEXT("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"),
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync ("Failed to open Registry Key for read and update notifications (%d)\n",
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync CloseHandle(m->haDataEvent[DATA_DNS_UPDATE_EVENT]);
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync while (true)
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync ("WaitForMultipleObjects failed (%d) to wait! Please debug",
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync if ((dwRc - WAIT_OBJECT_0) == DATA_DNS_UPDATE_EVENT)
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync else if ((dwRc - WAIT_OBJECT_0) == DATA_SHUTDOWN_EVENT)
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync ("WaitForMultipleObjects returns out of bound index %d. Please debug!",
dbbd0cae65188dffbd927bdde2d88cbeec2e26davboxsync hrc = RegEnumValueA(m->hKeyTcpipParameters, regIndex, keyName, &cbKeyName, 0,
8dfc5e89cd3421bb0602f33768f00c1f1d40b1d2vboxsync else if ( RTStrICmp("DhcpNameServer", keyName) == 0
18b1f1bb3429f8bfc1a52cfaeb2445e9fb1f55cdvboxsync /* OK, now parse and update DNS structures. */
18b1f1bb3429f8bfc1a52cfaeb2445e9fb1f55cdvboxsync /* domain name */
18b1f1bb3429f8bfc1a52cfaeb2445e9fb1f55cdvboxsync /* server list */
18b1f1bb3429f8bfc1a52cfaeb2445e9fb1f55cdvboxsync /* search list */
cf3059114e5c5c6ed5c8308b1ec759377fb5b885vboxsync strList2List(info.searchList, (char *)abSearchList);
3f2299591cfeb8a37a3578bef9c44c1790860948vboxsyncvoid HostDnsServiceWin::strList2List(std::vector<std::string>& lst, char *strLst)