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