HostDnsServiceWin.cpp revision dbbd0cae65188dffbd927bdde2d88cbeec2e26da
/* -*- indent-tabs-mode: nil; -*- */
#include <Windows.h>
#include <string>
#include <vector>
#include "../HostDnsService.h"
struct HostDnsServiceWin::Data
{
HostDnsServiceWin::Data(){}
#define DATA_DNS_UPDATE_EVENT 0
#define DATA_SHUTDOWN_EVENT 1
#define DATA_MAX_EVENT 2
};
{
TRUE,
TRUE);
("Failed to register event on the key. Please debug me!"),
return VINF_SUCCESS;
}
{
m = new Data();
("Failed to create event for DNS event (%d)\n", GetLastError()));
("Failed to create event for Shutdown signal (%d)\n", GetLastError()));
TEXT("SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters"),
("Failed to open Registry Key for read and update notifications (%d)\n",
GetLastError()));
}
{
if (m && !m->hKeyTcpipParameters)
{
m->hKeyTcpipParameters = 0;
delete m;
m = NULL;
}
}
{
return updateInfo();
}
{
}
int HostDnsServiceWin::monitorWorker()
{
while (true)
{
m->haDataEvent,
INFINITE);
("WaitForMultipleObjects failed (%d) to wait! Please debug",
{
updateInfo();
notifyAll();
}
{
break;
}
else
{
("WaitForMultipleObjects returns out of bound index %d. Please debug!",
dwRc),
}
}
return VINF_SUCCESS;
}
{
regIndex = 0;
do {
if ( hrc == ERROR_SUCCESS
|| hrc == ERROR_MORE_DATA)
{
&& cbKeyData > 1
&& cbKeyData > 1
&& abDomain[0] == 0
&& cbKeyData > 1
&& cbKeyData < sizeof(abNameServers))
&& cbKeyData > 1
&& abNameServers[0] == 0
&& cbKeyData < sizeof(abNameServers))
&& cbKeyData > 1
&& cbKeyData < sizeof(abSearchList))
}
regIndex++;
} while (hrc != ERROR_NO_MORE_ITEMS);
/* OK, now parse and update DNS structures. */
/* domain name */
/* server list */
/* search list */
return S_OK;
}
{
char address[512];
return;
do {
if (next)
else
} while(next);
}