ReactOS  0.4.14-dev-552-g2fad488
dnsrslvr.c File Reference
#include "precomp.h"
#include <debug.h>
Include dependency graph for dnsrslvr.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

DWORD WINAPI RpcThreadRoutine (LPVOID lpParameter)
 
static VOID UpdateServiceStatus (HANDLE hServiceStatus, DWORD NewStatus, DWORD Increment)
 
static DWORD WINAPI ServiceControlHandler (DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)
 
VOID WINAPI ServiceMain (DWORD argc, LPWSTR *argv)
 
BOOL WINAPI DllMain (_In_ HINSTANCE hinstDLL, _In_ DWORD fdwReason, _In_ PVOID pvReserved)
 

Variables

HINSTANCE hDllInstance
 
SERVICE_STATUS_HANDLE ServiceStatusHandle
 
SERVICE_STATUS SvcStatus
 
static WCHAR ServiceName [] = L"Dnscache"
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 13 of file dnsrslvr.c.

Function Documentation

◆ DllMain()

BOOL WINAPI DllMain ( _In_ HINSTANCE  hinstDLL,
_In_ DWORD  fdwReason,
_In_ PVOID  pvReserved 
)

Definition at line 131 of file dnsrslvr.c.

135 {
137 
138  switch (fdwReason)
139  {
140  case DLL_PROCESS_ATTACH:
141  DisableThreadLibraryCalls(hinstDLL);
142  hDllInstance = hinstDLL;
143  break;
144 
145  case DLL_PROCESS_DETACH:
146  break;
147  }
148 
149  return TRUE;
150 }
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
#define DLL_PROCESS_ATTACH
Definition: compat.h:120
HINSTANCE hDllInstance
Definition: dnsrslvr.c:18
#define DLL_PROCESS_DETACH
Definition: compat.h:119
static LPCSTR DWORD void * pvReserved
Definition: str.c:196

◆ RpcThreadRoutine()

DWORD WINAPI RpcThreadRoutine ( LPVOID  lpParameter)

Definition at line 16 of file rpcserver.c.

17 {
19 
20  Status = RpcServerUseProtseqEpW(L"ncalrpc", 20, L"DNSResolver", NULL);
21  if (Status != RPC_S_OK)
22  {
23  DPRINT("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
24  return 0;
25  }
26 
27  Status = RpcServerRegisterIf(DnsResolver_v2_0_s_ifspec, NULL, NULL);
28  if (Status != RPC_S_OK)
29  {
30  DPRINT("RpcServerRegisterIf() failed (Status %lx)\n", Status);
31  return 0;
32  }
33 
35  if (Status != RPC_S_OK)
36  {
37  DPRINT("RpcServerListen() failed (Status %lx)\n", Status);
38  }
39 
40  DPRINT("RpcServerListen finished\n");
41  return 0;
42 }
long RPC_STATUS
Definition: rpc.h:52
RPC_STATUS WINAPI RpcServerListen(UINT MinimumCallThreads, UINT MaxCalls, UINT DontWait)
Definition: rpc_server.c:1520
#define RPC_C_LISTEN_MAX_CALLS_DEFAULT
Definition: rpcdce.h:122
smooth NULL
Definition: ftsmooth.c:416
void DPRINT(...)
Definition: polytest.cpp:61
RPC_STATUS WINAPI RpcServerRegisterIf(RPC_IF_HANDLE IfSpec, UUID *MgrTypeUuid, RPC_MGR_EPV *MgrEpv)
Definition: rpc_server.c:1116
static const WCHAR L[]
Definition: oid.c:1250
Status
Definition: gdiplustypes.h:24
RPC_STATUS WINAPI RpcServerUseProtseqEpW(RPC_WSTR Protseq, UINT MaxCalls, RPC_WSTR Endpoint, LPVOID SecurityDescriptor)
Definition: rpc_server.c:927
#define RPC_S_OK
Definition: rpcnterr.h:22

Referenced by ServiceInit(), and ServiceMain().

◆ ServiceControlHandler()

static DWORD WINAPI ServiceControlHandler ( DWORD  dwControl,
DWORD  dwEventType,
LPVOID  lpEventData,
LPVOID  lpContext 
)
static

Definition at line 46 of file dnsrslvr.c.

51 {
52  switch (dwControl)
53  {
60  break;
61 
63  return NO_ERROR;
64 
65  default:
67  }
68  return NO_ERROR;
69 }
VOID DnsIntCacheFree(VOID)
Definition: cache.c:36
RPC_STATUS WINAPI RpcMgmtStopServerListening(RPC_BINDING_HANDLE Binding)
Definition: rpc_server.c:1596
#define NO_ERROR
Definition: dderror.h:5
#define SERVICE_STOPPED
Definition: winsvc.h:21
static VOID UpdateServiceStatus(HANDLE hServiceStatus, DWORD NewStatus, DWORD Increment)
Definition: dnsrslvr.c:29
smooth NULL
Definition: ftsmooth.c:416
#define SERVICE_CONTROL_INTERROGATE
Definition: winsvc.h:39
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:92
#define SERVICE_CONTROL_STOP
Definition: winsvc.h:36
#define SERVICE_STOP_PENDING
Definition: winsvc.h:23
SERVICE_STATUS_HANDLE ServiceStatusHandle
Definition: dnsrslvr.c:19
#define SERVICE_CONTROL_SHUTDOWN
Definition: winsvc.h:40

Referenced by ServiceMain().

◆ ServiceMain()

VOID WINAPI ServiceMain ( DWORD  argc,
LPWSTR argv 
)

Definition at line 73 of file dnsrslvr.c.

76 {
78 
81 
82  DPRINT("ServiceMain() called\n");
83 
90  SvcStatus.dwWaitHint = 4000;
91 
94  NULL);
95 
97  {
98  DPRINT1("DNSRSLVR: Unable to register service control handler (%lx)\n", GetLastError());
99  return; // FALSE
100  }
101 
103 
104  ReadHostsFile();
105 
107  0,
110  NULL,
111  0,
112  NULL);
113 
114  if (!hThread)
115  {
116  DnsIntCacheFree();
117  DPRINT("Can't create RpcThread\n");
119  }
120  else
121  {
123  }
124 
125  DPRINT("ServiceMain() done\n");
127 }
VOID DnsIntCacheFree(VOID)
Definition: cache.c:36
static int argc
Definition: ServiceArgs.c:12
DWORD(WINAPI * LPTHREAD_START_ROUTINE)(LPVOID)
Definition: winbase.h:707
#define CloseHandle
Definition: compat.h:406
DWORD dwCurrentState
Definition: winsvc.h:100
SERVICE_STATUS SvcStatus
Definition: dnsrslvr.c:20
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:323
#define SERVICE_ACCEPT_STOP
Definition: winsvc.h:28
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
#define SERVICE_START_PENDING
Definition: winsvc.h:22
DWORD dwServiceSpecificExitCode
Definition: winsvc.h:103
#define argv
Definition: mplay32.c:18
#define NO_ERROR
Definition: dderror.h:5
static DWORD WINAPI ServiceControlHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)
Definition: dnsrslvr.c:46
DWORD dwCheckPoint
Definition: winsvc.h:104
#define SERVICE_STOPPED
Definition: winsvc.h:21
static VOID UpdateServiceStatus(HANDLE hServiceStatus, DWORD NewStatus, DWORD Increment)
Definition: dnsrslvr.c:29
#define SERVICE_RUNNING
Definition: winsvc.h:24
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
Definition: thread.c:136
smooth NULL
Definition: ftsmooth.c:416
void DPRINT(...)
Definition: polytest.cpp:61
#define SERVICE_WIN32_OWN_PROCESS
Definition: cmtypes.h:960
BOOL ReadHostsFile(VOID)
Definition: hostsfile.c:283
#define SERVICE_ACCEPT_SHUTDOWN
Definition: winsvc.h:30
static WCHAR ServiceName[]
Definition: dnsrslvr.c:21
DWORD dwWaitHint
Definition: winsvc.h:105
DWORD dwWin32ExitCode
Definition: winsvc.h:102
DWORD dwServiceType
Definition: winsvc.h:99
SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR lpServiceName, LPHANDLER_FUNCTION_EX lpHandlerProc, LPVOID lpContext)
Definition: sctrl.c:810
DWORD dwControlsAccepted
Definition: winsvc.h:101
HANDLE hThread
Definition: wizard.c:27
#define DPRINT1
Definition: precomp.h:8
VOID DnsIntCacheInitialize(VOID)
Definition: cache.c:21
DWORD WINAPI RpcThreadRoutine(LPVOID lpParameter)
Definition: rpcserver.c:16
SERVICE_STATUS_HANDLE ServiceStatusHandle
Definition: dnsrslvr.c:19

◆ UpdateServiceStatus()

static VOID UpdateServiceStatus ( HANDLE  hServiceStatus,
DWORD  NewStatus,
DWORD  Increment 
)
static

Definition at line 29 of file dnsrslvr.c.

33 {
34  if (Increment > 0)
36  else
38 
39  SvcStatus.dwCurrentState = NewStatus;
41 }
DWORD dwCurrentState
Definition: winsvc.h:100
SERVICE_STATUS SvcStatus
Definition: dnsrslvr.c:20
BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus)
Definition: sctrl.c:995
DWORD dwCheckPoint
Definition: winsvc.h:104
SERVICE_STATUS_HANDLE hServiceStatus
Definition: main.c:10
IN OUT PLONG IN OUT PLONG Addend IN OUT PLONG IN LONG Increment
Definition: CrNtStubs.h:42

Referenced by ServiceControlHandler(), and ServiceMain().

Variable Documentation

◆ hDllInstance

HINSTANCE hDllInstance

Definition at line 18 of file dnsrslvr.c.

Referenced by DllMain().

◆ ServiceName

WCHAR ServiceName[] = L"Dnscache"
static

Definition at line 21 of file dnsrslvr.c.

Referenced by ServiceMain().

◆ ServiceStatusHandle

SERVICE_STATUS_HANDLE ServiceStatusHandle

Definition at line 19 of file dnsrslvr.c.

Referenced by ServiceControlHandler(), and ServiceMain().

◆ SvcStatus

SERVICE_STATUS SvcStatus

Definition at line 20 of file dnsrslvr.c.

Referenced by ServiceMain(), and UpdateServiceStatus().