xref: /reactos/dll/win32/dnsapi/rpc.c (revision 019f21ee)
1 #define WIN32_NO_STATUS
2 #define _INC_WINDOWS
3 #define COM_NO_WINDOWS_H
4 #include <stdarg.h>
5 #include <windef.h>
6 #include <winbase.h>
7 #include <dnsrslvr_c.h>
8 
9 #define NDEBUG
10 #include <debug.h>
11 
12 handle_t __RPC_USER
13 DNSRSLVR_HANDLE_bind(DNSRSLVR_HANDLE pszMachineName)
14 {
15     handle_t hBinding = NULL;
16     LPWSTR pszStringBinding;
17     RPC_STATUS Status;
18 
19     DPRINT1("DNSRSLVR_HANDLE_bind(%S)\n", pszMachineName);
20 
21     Status = RpcStringBindingComposeW(NULL,
22                                       L"ncalrpc",
23                                       pszMachineName,
24                                       L"DNSResolver",
25                                       NULL,
26                                       &pszStringBinding);
27     if (Status != RPC_S_OK)
28     {
29         DPRINT1("RpcStringBindingCompose returned 0x%x\n", Status);
30         return NULL;
31     }
32 
33     /* Set the binding handle that will be used to bind to the server. */
34     Status = RpcBindingFromStringBindingW(pszStringBinding,
35                                           &hBinding);
36     if (Status != RPC_S_OK)
37     {
38         DPRINT1("RpcBindingFromStringBinding returned 0x%x\n", Status);
39     }
40 
41     Status = RpcStringFreeW(&pszStringBinding);
42     if (Status != RPC_S_OK)
43     {
44         DPRINT1("RpcStringFree returned 0x%x\n", Status);
45     }
46 
47     return hBinding;
48 }
49 
50 void __RPC_USER
51 DNSRSLVR_HANDLE_unbind(DNSRSLVR_HANDLE pszMachineName,
52                        handle_t hBinding)
53 {
54     RPC_STATUS Status;
55 
56     DPRINT("DNSRSLVR_HANDLE_unbind(%S)\n", pszMachineName);
57 
58     Status = RpcBindingFree(&hBinding);
59     if (Status != RPC_S_OK)
60     {
61         DPRINT1("RpcBindingFree returned 0x%x\n", Status);
62     }
63 }
64 
65 void __RPC_FAR * __RPC_USER
66 midl_user_allocate(SIZE_T len)
67 {
68     return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
69 }
70 
71 void __RPC_USER
72 midl_user_free(void __RPC_FAR * ptr)
73 {
74     HeapFree(GetProcessHeap(), 0, ptr);
75 }