ReactOS  0.4.15-dev-2961-gecb0c09
rpcserver.c File Reference
#include "precomp.h"
#include <debug.h>
Include dependency graph for rpcserver.c:

Go to the source code of this file.

Macros

#define NDEBUG
 

Functions

DWORD WINAPI RpcThreadRoutine (LPVOID lpParameter)
 
DWORD __stdcall CRrReadCache (_In_ DNSRSLVR_HANDLE pwszServerName, _Out_ DNS_CACHE_ENTRY **ppCacheEntries)
 
DWORD __stdcall R_ResolverFlushCache (_In_ DNSRSLVR_HANDLE pszServerName)
 
DWORD __stdcall R_ResolverFlushCacheEntry (_In_ DNSRSLVR_HANDLE pszServerName, _In_ LPCWSTR pszName, _In_ WORD wType)
 
DWORD __stdcall R_ResolverQuery (_In_ DNSRSLVR_HANDLE pszServerName, _In_ LPCWSTR pszName, _In_ WORD wType, _In_ DWORD dwFlags, _Inout_ DWORD *dwRecords, _Out_ DNS_RECORDW **ppResultRecords)
 
void __RPC_FAR *__RPC_USER midl_user_allocate (SIZE_T len)
 
void __RPC_USER midl_user_free (void __RPC_FAR *ptr)
 
void __RPC_USER DNSRSLVR_RPC_HANDLE_rundown (DNSRSLVR_HANDLE hClientHandle)
 

Macro Definition Documentation

◆ NDEBUG

#define NDEBUG

Definition at line 11 of file rpcserver.c.

Function Documentation

◆ CRrReadCache()

DWORD __stdcall CRrReadCache ( _In_ DNSRSLVR_HANDLE  pwszServerName,
_Out_ DNS_CACHE_ENTRY **  ppCacheEntries 
)

Definition at line 48 of file rpcserver.c.

51 {
52  DPRINT("CRrReadCache(%S %p)\n",
53  pwszServerName, ppCacheEntries);
54 
55  return DnsIntCacheGetEntries(ppCacheEntries);
56 }
DNS_STATUS DnsIntCacheGetEntries(_Out_ DNS_CACHE_ENTRY **ppCacheEntries)
Definition: cache.c:264
#define DPRINT
Definition: sndvol32.h:71

Referenced by DnsGetCacheDataTable().

◆ DNSRSLVR_RPC_HANDLE_rundown()

void __RPC_USER DNSRSLVR_RPC_HANDLE_rundown ( DNSRSLVR_HANDLE  hClientHandle)

Definition at line 182 of file rpcserver.c.

183 {
184 }

◆ midl_user_allocate()

void __RPC_FAR* __RPC_USER midl_user_allocate ( SIZE_T  len)

Definition at line 172 of file rpcserver.c.

173 {
175 }
#define GetProcessHeap()
Definition: compat.h:595
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
GLenum GLsizei len
Definition: glext.h:6722
#define HEAP_ZERO_MEMORY
Definition: compat.h:134

◆ midl_user_free()

void __RPC_USER midl_user_free ( void __RPC_FAR ptr)

Definition at line 177 of file rpcserver.c.

178 {
179  HeapFree(GetProcessHeap(), 0, ptr);
180 }
static PVOID ptr
Definition: dispmode.c:27
#define GetProcessHeap()
Definition: compat.h:595
#define HeapFree(x, y, z)
Definition: compat.h:594

◆ R_ResolverFlushCache()

DWORD __stdcall R_ResolverFlushCache ( _In_ DNSRSLVR_HANDLE  pszServerName)

Definition at line 62 of file rpcserver.c.

64 {
65  DPRINT("R_ResolverFlushCache(%S)\n",
66  pszServerName);
67 
69 }
DNS_STATUS DnsIntCacheFlush(_In_ ULONG ulFlags)
Definition: cache.c:69
#define CACHE_FLUSH_NON_HOSTS_FILE_ENTRIES
Definition: precomp.h:48
#define DPRINT
Definition: sndvol32.h:71

Referenced by DnsFlushResolverCache().

◆ R_ResolverFlushCacheEntry()

DWORD __stdcall R_ResolverFlushCacheEntry ( _In_ DNSRSLVR_HANDLE  pszServerName,
_In_ LPCWSTR  pszName,
_In_ WORD  wType 
)

Definition at line 75 of file rpcserver.c.

79 {
80  DPRINT("R_ResolverFlushCacheEntry(%S %S %x)\n",
81  pszServerName, pszName, wType);
82 
83  if (pszName == NULL)
85 
86  return DnsIntFlushCacheEntry(pszName, wType);
87 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
DNS_STATUS DnsIntFlushCacheEntry(_In_ LPCWSTR pszName, _In_ WORD wType)
Definition: cache.c:106
#define NULL
Definition: types.h:112
#define DPRINT
Definition: sndvol32.h:71

Referenced by DnsFlushResolverCacheEntry_A(), DnsFlushResolverCacheEntry_UTF8(), and DnsFlushResolverCacheEntry_W().

◆ R_ResolverQuery()

DWORD __stdcall R_ResolverQuery ( _In_ DNSRSLVR_HANDLE  pszServerName,
_In_ LPCWSTR  pszName,
_In_ WORD  wType,
_In_ DWORD  dwFlags,
_Inout_ DWORD dwRecords,
_Out_ DNS_RECORDW **  ppResultRecords 
)

Definition at line 93 of file rpcserver.c.

100 {
102  DNS_STATUS Status = ERROR_SUCCESS;
103 
104  DPRINT("R_ResolverQuery(%S %S %x %lx %p %p)\n",
105  pszServerName, pszName, wType, dwFlags, dwRecords, ppResultRecords);
106 
107  if (pszName == NULL || wType == 0 || ppResultRecords == NULL)
109 
112 
114  {
115  DPRINT("DNS query!\n");
116  Status = Query_Main(pszName,
117  wType,
118  dwFlags,
119  ppResultRecords);
120  }
121  else if (dwFlags & DNS_QUERY_NO_WIRE_QUERY)
122  {
123  DPRINT("DNS cache query!\n");
125  wType,
126  dwFlags,
127  ppResultRecords);
128  }
129  else
130  {
131  DPRINT("DNS cache query!\n");
133  wType,
134  dwFlags,
135  ppResultRecords);
137  {
138  DPRINT("DNS query!\n");
139  Status = Query_Main(pszName,
140  wType,
141  dwFlags,
142  ppResultRecords);
143  if (Status == ERROR_SUCCESS)
144  {
145  DPRINT("DNS query successful!\n");
146  DnsIntCacheAddEntry(*ppResultRecords, FALSE);
147  }
148  }
149  }
150 
151  if (dwRecords)
152  {
153  *dwRecords = 0;
154 
155  if (Status == ERROR_SUCCESS)
156  {
157  Record = *ppResultRecords;
158  while (Record)
159  {
160  DPRINT("Record: %S\n", Record->pName);
161  (*dwRecords)++;
162  Record = Record->pNext;
163  }
164  }
165  }
166 
167  DPRINT("R_ResolverQuery result %ld %ld\n", Status, *dwRecords);
168 
169  return Status;
170 }
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define ERROR_SUCCESS
Definition: deptool.c:10
#define DNS_INFO_NO_RECORDS
Definition: winerror.h:1861
_In_ struct _KBUGCHECK_REASON_CALLBACK_RECORD * Record
Definition: ketypes.h:256
#define FALSE
Definition: types.h:117
#define DNS_QUERY_WIRE_ONLY
Definition: windns.h:18
Status
Definition: gdiplustypes.h:24
DNS_STATUS DnsIntCacheGetEntryByName(LPCWSTR Name, WORD wType, DWORD dwFlags, PDNS_RECORDW *Record)
Definition: cache.c:150
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
#define NULL
Definition: types.h:112
#define DNS_QUERY_NO_WIRE_QUERY
Definition: windns.h:13
DNS_STATUS WINAPI Query_Main(LPCWSTR Name, WORD Type, DWORD Options, PDNS_RECORD *QueryResultSet)
Definition: query.c:654
VOID DnsIntCacheAddEntry(_In_ PDNS_RECORDW Record, _In_ BOOL bHostsFileEntry)
Definition: cache.c:233
#define DPRINT
Definition: sndvol32.h:71

Referenced by DnsQuery_W().

◆ 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
Status
Definition: gdiplustypes.h:24
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
RPC_STATUS WINAPI RpcServerUseProtseqEpW(RPC_WSTR Protseq, UINT MaxCalls, RPC_WSTR Endpoint, LPVOID SecurityDescriptor)
Definition: rpc_server.c:927
#define NULL
Definition: types.h:112
#define DPRINT
Definition: sndvol32.h:71
#define RPC_S_OK
Definition: rpcnterr.h:22