ReactOS 0.4.17-dev-243-g1369312
dhcpcsvc.c
Go to the documentation of this file.
1/*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: lib/dhcpcapi/dhcpcapi.c
5 * PURPOSE: Client API for DHCP
6 * COPYRIGHT: Copyright 2005 Art Yerkes <ayerkes@speakeasy.net>
7 */
8
9#include <rosdhcp.h>
10#include <winsvc.h>
11#include <dhcpcapi.h>
12
13#define NDEBUG
14#include <debug.h>
15
16static WCHAR ServiceName[] = L"DHCP";
17
22
23extern SOCKET DhcpSocket;
24
25
27{
29}
30
32{
34}
35
38 _In_ PDHCP_SERVER_NAME pszServerName)
39{
41 LPWSTR pszStringBinding;
43
44 DPRINT("PDHCP_SERVER_NAME_bind() called\n");
45
47 L"ncacn_np",
48 pszServerName,
49 L"\\pipe\\dhcpcsvc",
50 NULL,
51 &pszStringBinding);
52 if (status)
53 {
54 DPRINT1("RpcStringBindingCompose returned 0x%x\n", status);
55 return NULL;
56 }
57
58 /* Set the binding handle that will be used to bind to the server. */
59 status = RpcBindingFromStringBindingW(pszStringBinding,
60 &hBinding);
61 if (status)
62 {
63 DPRINT1("RpcBindingFromStringBinding returned 0x%x\n", status);
64 }
65
66 status = RpcStringFreeW(&pszStringBinding);
67 if (status)
68 {
69 DPRINT1("RpcStringFree returned 0x%x\n", status);
70 }
71
72 return hBinding;
73}
74
75void __RPC_USER
77 _In_ PDHCP_SERVER_NAME pszServerName,
79{
81
82 DPRINT("PDHCP_SERVER_NAME_unbind() called\n");
83
85 if (status)
86 {
87 DPRINT1("RpcBindingFree returned 0x%x\n", status);
88 }
89}
90
91static
94 _In_ PWSTR pszAdapterName)
95{
96 WCHAR szKeyName[256];
97 PWSTR pszUnicodeBuffer = NULL;
98 PSZ pszAnsiBuffer = NULL;
99 DWORD dwUnicodeSize = 0, dwAnsiSize = 0;
100 HKEY hKey = NULL;
101 DWORD dwError = ERROR_SUCCESS;
102
103 DPRINT("SetBinaryClassId(%S)\n", pszAdapterName);
104
105 _swprintf(szKeyName,
106 L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\%s",
107 pszAdapterName);
108 DPRINT("KeyName %S\n", szKeyName);
109
111 szKeyName,
112 0,
114 &hKey);
115 if (dwError != ERROR_SUCCESS)
116 {
117 DPRINT1("Error %lu\n", dwError);
118 return dwError;
119 }
120
122 L"DhcpClassId",
123 NULL,
124 NULL,
125 NULL,
126 &dwUnicodeSize);
127 DPRINT("UnicodeSize %lu\n", dwUnicodeSize);
128
129 pszUnicodeBuffer = HeapAlloc(GetProcessHeap(), 0, dwUnicodeSize);
130 if (pszUnicodeBuffer == NULL)
131 {
132 dwError = ERROR_NOT_ENOUGH_MEMORY;
133 DPRINT1("Error %lu\n", dwError);
134 goto done;
135 }
136
137 dwError = RegQueryValueExW(hKey,
138 L"DhcpClassId",
139 NULL,
140 NULL,
141 (PBYTE)pszUnicodeBuffer,
142 &dwUnicodeSize);
143 if (dwError != ERROR_SUCCESS)
144 {
145 DPRINT1("Error %lu\n", dwError);
146 goto done;
147 }
148
149 dwAnsiSize = WideCharToMultiByte(CP_ACP,
150 0,
151 pszUnicodeBuffer,
152 -1,
153 NULL,
154 0,
155 NULL,
156 NULL);
157 DPRINT("AnsiSize %lu\n", dwAnsiSize);
158
159 pszAnsiBuffer = HeapAlloc(GetProcessHeap(), 0, dwAnsiSize);
160 if (pszAnsiBuffer == NULL)
161 {
162 dwError = ERROR_NOT_ENOUGH_MEMORY;
163 DPRINT1("Error %lu\n", dwError);
164 goto done;
165 }
166
168 0,
169 pszUnicodeBuffer,
170 -1,
171 pszAnsiBuffer,
172 dwAnsiSize,
173 NULL,
174 NULL);
175 DPRINT("AnsiBuffer %s\n", pszAnsiBuffer);
176
177 dwError = RegSetValueExW(hKey,
178 L"DhcpClassIdBin",
179 0,
181 (PBYTE)pszAnsiBuffer,
182 strlen(pszAnsiBuffer));
183 if (dwError != ERROR_SUCCESS)
184 {
185 DPRINT1("Error %lu\n", dwError);
186 }
187
188done:
189 if (hKey)
191
192 if (pszAnsiBuffer)
193 HeapFree(GetProcessHeap(), 0, pszAnsiBuffer);
194
195 if (pszUnicodeBuffer)
196 HeapFree(GetProcessHeap(), 0, pszUnicodeBuffer);
197
198 return dwError;
199}
200
211DWORD
215{
216 *Version = 2;
217 return ERROR_SUCCESS;
218}
219
225VOID
228{
229}
230
241DWORD
245{
246 DWORD ret;
247
248 DPRINT("DhcpAcquireParameters(%S)\n", AdapterName);
249
251 {
252 ret = Client_AcquireParameters(NULL, AdapterName);
253 }
255 {
257 }
259
260 return ret;
261}
262
273DWORD
277{
278 DWORD ret;
279
280 DPRINT("DhcpAcquireParametersByBroadcast(%S)\n", AdapterName);
281
283 {
284 ret = Client_AcquireParametersByBroadcast(NULL, AdapterName);
285 }
287 {
289 }
291
292 return ret;
293}
294
295DWORD
301{
303 return 0;
304}
305
325DWORD
328 _In_ DWORD Unknown1,
332{
333 DPRINT1("DhcpEnumClasses(%lx %S %lx %lx)\n",
334 Unknown1, AdapterName, Unknown3, Unknown4);
335 return 0;
336}
337
348DWORD
352{
353 DWORD ret;
354
355 DPRINT("DhcpFallbackRefreshParams(%S)\n", AdapterName);
356
358 {
359 ret = Client_FallbackRefreshParams(NULL, AdapterName);
360 }
362 {
364 }
366
367 return ret;
368}
369
392DWORD
395 _In_ DWORD Unknown1,
396 _In_ DWORD Unknown2,
398 _In_ PDHCP_PNP_EVENT PnpEvent,
400{
401 DWORD dwError = ERROR_SUCCESS;
402
403 DPRINT1("DhcpHandlePnPEvent(%lx %lx %S %p %lx)\n",
404 Unknown1, Unknown2, AdapterName, PnpEvent, Unknown5);
405
406 if ((Unknown1 != 0) || (Unknown2 != 1) || (PnpEvent == NULL) || (Unknown5 != 0))
408
409 if (PnpEvent->Unknown5)
410 {
411 dwError = SetBinaryClassId(AdapterName);
412 }
413
414 return dwError;
415}
416
447DWORD
450 _In_ LPWSTR ServerName,
452 _In_ BOOL NewIpAddress,
453 _In_ DWORD IpIndex,
454 _In_ DWORD IpAddress,
455 _In_ DWORD SubnetMask,
456 _In_ INT DhcpAction)
457{
458 DPRINT("DhcpNotifyConfigChange(%S %S %lu %lu %lu %lu %d)\n",
459 ServerName, AdapterName, NewIpAddress, IpIndex, IpAddress, SubnetMask, DhcpAction);
460 return DhcpNotifyConfigChangeEx(ServerName, AdapterName, NewIpAddress,
461 IpIndex, IpAddress, SubnetMask, DhcpAction, 0);
462}
463
497DWORD
500 _In_ LPWSTR ServerName,
502 _In_ BOOL NewIpAddress,
503 _In_ DWORD IpIndex,
504 _In_ DWORD IpAddress,
505 _In_ DWORD SubnetMask,
506 _In_ INT DhcpAction,
507 _In_ DWORD Unknown8)
508{
510
511 DPRINT1("DHCPCSVC: DhcpNotifyConfigChangeEx not implemented yet\n");
512 DPRINT1("DhcpNotifyConfigChangeEx(%S %S %lu %lu %lu %lu %d %lu)\n",
513 ServerName, AdapterName, NewIpAddress, IpIndex, IpAddress, SubnetMask, DhcpAction, Unknown8);
514
515 if (AdapterName == NULL)
517
518 if (DhcpAction == 1) // Enable DHCP
519 {
520 if ((NewIpAddress != FALSE) ||
521 (IpIndex != 0) ||
522 (IpAddress != 0) ||
523 (SubnetMask != 0))
525 }
526 else if (DhcpAction == 2) // Disable DHCP
527 {
528 if ((NewIpAddress == FALSE) ||
529 (IpIndex != 0) ||
530 (IpAddress == 0) ||
531 (SubnetMask == 0))
533 }
534 else if (DhcpAction == 0) // Do not modify
535 {
536
537 }
538 else
539 {
541 }
542
543 if (DhcpAction == 1) // Enable DHCP
544 {
545 /* TODO: Remove static IP address(es) */
546
548 {
549 ret = Server_EnableDhcp(ServerName, AdapterName, TRUE);
550 }
552 {
554 }
556 }
557 else if (DhcpAction == 2) // Disable DHCP
558 {
560 {
561 ret = Server_EnableDhcp(ServerName, AdapterName, FALSE);
562 }
564 {
566 }
568 }
569 else if (DhcpAction == 0) // Do not modify
570 {
571
572 }
573
574 return ret;
575}
576
577DWORD
583 _In_ LPDHCPCAPI_CLASSID ClassId,
586{
587 DPRINT1("DhcpRegisterParamChange(%lx %p %S)\n", Flags, Reserved, AdapterName);
588
591
592 if ((Reserved != NULL) || (AdapterName == NULL) || (Handle == NULL))
594
596 return 0;
597}
598
609DWORD
613{
614 DWORD ret;
615
616 DPRINT("DhcpReleaseParameters(%S)\n", AdapterName);
617
619 {
620 ret = Client_ReleaseParameters(NULL, AdapterName);
621 }
623 {
625 }
627
628 return ret;
629}
630
636DWORD
639{
640 DWORD ret;
641
642 DPRINT("DhcpRemoveDNSRegistrations()\n");
643
645 {
646 ret = Client_RemoveDNSRegistrations(NULL);
647 }
649 {
651 }
653
654 return ret;
655}
656
657DWORD
663 _In_ LPDHCPCAPI_CLASSID ClassId,
664 _In_ DHCPCAPI_PARAMS_ARRAY SendParams,
667 _Inout_ LPDWORD pSize,
668 _In_ LPWSTR RequestIdStr)
669{
671
672 DPRINT1("DhcpRequestParams(%lx %p %S %p %lu %p %lu %p %p %p %S)\n",
673 Flags, Reserved, AdapterName, ClassId, SendParams.nParams, SendParams.Params,
674 RecdParams.nParams, RecdParams.Params, Buffer, pSize, RequestIdStr);
675
680
681 if ((Reserved != NULL) || (AdapterName == NULL))
683
684 if (ClassId != NULL)
685 {
686 if (ClassId->Flags != 0)
688
689 if ((ClassId->Data == NULL) || (ClassId->nBytesData == 0))
691 }
692
693 if ((SendParams.nParams != 0) && (SendParams.Params == NULL))
695
696 if (RecdParams.Params == NULL)
698
700 {
701 ret = Client_RequestParams(NULL,
703 ClassId,
704 &SendParams,
705 0,
706 0);
707 }
709 {
711 }
713
714 return ret;
715}
716
717DWORD
721 DWORD Netmask)
722{
723 DWORD ret;
724
725 DPRINT("DhcpStaticRefreshParams()\n");
726
728 {
729 ret = Client_StaticRefreshParams(NULL, AdapterIndex, Address, Netmask);
730 }
732 {
734 }
736
737 return (ret == ERROR_SUCCESS) ? 1 : 0;
738}
739
740DWORD
746 _In_ LPWSTR RequestIdStr)
747{
748 DPRINT1("DhcpUndoRequestParams(%lx %p %S %S)\n",
749 Flags, Reserved, AdapterName, RequestIdStr);
750
751 if ((Flags != 0) || (Reserved != NULL) || (RequestIdStr == NULL))
753
755 return STATUS_SUCCESS;
756}
757
758static VOID
760{
763
764 if (dwState == SERVICE_RUNNING)
766 else
768
772
773 if (dwState == SERVICE_START_PENDING ||
774 dwState == SERVICE_STOP_PENDING)
776 else
778
781}
782
783static DWORD WINAPI
785 DWORD dwEventType,
786 LPVOID lpEventData,
787 LPVOID lpContext)
788{
789 switch (dwControl)
790 {
794 if (hStopEvent != NULL)
796 return ERROR_SUCCESS;
797
801 return ERROR_SUCCESS;
802
803 default:
805 }
806}
807
810{
811 HANDLE hPipeThread = INVALID_HANDLE_VALUE;
812 HANDLE hDiscoveryThread = INVALID_HANDLE_VALUE;
813 DWORD ret;
814
817 NULL);
819 {
820 DPRINT1("DHCPCSVC: Unable to register service control handler (%lx)\n", GetLastError());
821 return;
822 }
823
825
826 /* Create the stop event */
828 if (hStopEvent == NULL)
829 {
831 return;
832 }
833
836 {
839 return;
840 }
841
843
844 if (!init_client())
845 {
846 DbgPrint("DHCPCSVC: init_client() failed!\n");
850 return;
851 }
852
854
855 hPipeThread = InitRpc();
856 if (hPipeThread == INVALID_HANDLE_VALUE)
857 {
858 DbgPrint("DHCPCSVC: PipeInit() failed!\n");
859 stop_client();
863 return;
864 }
865
866 hDiscoveryThread = StartAdapterDiscovery(hStopEvent);
867 if (hDiscoveryThread == INVALID_HANDLE_VALUE)
868 {
869 DbgPrint("DHCPCSVC: StartAdapterDiscovery() failed!\n");
870 ShutdownRpc();
871 stop_client();
875 return;
876 }
877
878 DH_DbgPrint(MID_TRACE,("DHCP Service Started\n"));
879
881
882 DH_DbgPrint(MID_TRACE,("Going into dispatch()\n"));
883 DH_DbgPrint(MID_TRACE,("DHCPCSVC: DHCP service is starting up\n"));
884
886
887 DH_DbgPrint(MID_TRACE,("DHCPCSVC: DHCP service is shutting down\n"));
888
889 ShutdownRpc();
890 stop_client();
891
892 DPRINT("Wait for pipe thread to close! %p\n", hPipeThread);
893 if (hPipeThread != INVALID_HANDLE_VALUE)
894 {
895 DPRINT("Waiting for pipe thread\n");
896 ret = WaitForSingleObject(hPipeThread, 5000);
897 DPRINT("Done %lx\n", ret);
898 }
899
900 DPRINT("Wait for discovery thread to close! %p\n", hDiscoveryThread);
901 if (hDiscoveryThread != INVALID_HANDLE_VALUE)
902 {
903 DPRINT("Waiting for discovery thread\n");
904 ret = WaitForSingleObject(hDiscoveryThread, 5000);
905 DPRINT("Done %lx\n", ret);
906 }
907
908 DPRINT("Closing events!\n");
911
914
915 CloseHandle(hDiscoveryThread);
916 CloseHandle(hPipeThread);
917
918 DPRINT("Done!\n");
919
921}
922
927{
928 switch (fdwReason)
929 {
932 break;
933
935 break;
936 }
937
938 return TRUE;
939}
940
941/* EOF */
static SERVICE_STATUS_HANDLE(WINAPI *pRegisterServiceCtrlHandlerExA)(LPCSTR
PRTL_UNICODE_STRING_BUFFER PULONG PULONG Unknown4
static DWORD const fdwReason
#define DPRINT1
Definition: precomp.h:8
HANDLE StartAdapterDiscovery(HANDLE hStopEvent)
Definition: adapter.c:591
VOID ShutdownRpc(VOID)
Definition: api.c:71
DWORD __stdcall Server_EnableDhcp(_In_ PDHCP_SERVER_NAME ServerName, _In_ LPWSTR AdapterName, _In_ BOOL Enable)
Definition: api.c:81
HANDLE InitRpc(VOID)
Definition: api.c:65
void dispatch(HANDLE hStopEvent)
Definition: dispatch.c:70
#define MID_TRACE
Definition: debug.h:15
#define DH_DbgPrint(_t_, _x_)
Definition: debug.h:49
#define UNIMPLEMENTED
Definition: ntoskrnl.c:15
#define RegCloseKey(hKey)
Definition: registry.h:49
Definition: bufpool.h:45
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD Unknown5
Definition: conport.c:39
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD Unknown3
Definition: conport.c:37
handle_t hBinding
Definition: ctx_c.c:54
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define ERROR_SUCCESS
Definition: deptool.c:10
int init_client(void)
Definition: dhclient.c:111
void stop_client(void)
Definition: dhclient.c:129
#define DHCPCAPI_REQUEST_SYNCHRONOUS
Definition: dhcpcsdk.h:129
#define DHCPCAPI_REQUEST_PERSISTENT
Definition: dhcpcsdk.h:128
#define DHCPCAPI_REGISTER_HANDLE_EVENT
Definition: dhcpcsdk.h:126
static WCHAR ServiceName[]
Definition: dhcpcsvc.c:16
DWORD APIENTRY DhcpCApiInitialize(_Out_ LPDWORD Version)
Definition: dhcpcsvc.c:213
DWORD APIENTRY DhcpHandlePnPEvent(_In_ DWORD Unknown1, _In_ DWORD Unknown2, _In_ PWSTR AdapterName, _In_ PDHCP_PNP_EVENT PnpEvent, _In_ DWORD Unknown5)
Definition: dhcpcsvc.c:394
DWORD APIENTRY DhcpRemoveDNSRegistrations(VOID)
Definition: dhcpcsvc.c:638
HANDLE hAdapterStateChangedEvent
Definition: dhcpcsvc.c:21
static DWORD SetBinaryClassId(_In_ PWSTR pszAdapterName)
Definition: dhcpcsvc.c:93
SOCKET DhcpSocket
Definition: adapter.c:8
DWORD APIENTRY DhcpReleaseParameters(_In_ PWSTR AdapterName)
Definition: dhcpcsvc.c:611
DWORD APIENTRY DhcpUndoRequestParams(_In_ DWORD Flags, _In_ LPVOID Reserved, _In_ LPWSTR AdapterName, _In_ LPWSTR RequestIdStr)
Definition: dhcpcsvc.c:742
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
Definition: dhcpcsvc.c:924
DWORD APIENTRY DhcpFallbackRefreshParams(_In_ PWSTR AdapterName)
Definition: dhcpcsvc.c:350
void __RPC_USER MIDL_user_free(void __RPC_FAR *ptr)
Definition: dhcpcsvc.c:31
VOID WINAPI ServiceMain(DWORD argc, LPWSTR *argv)
Definition: dhcpcsvc.c:809
static DWORD WINAPI ServiceControlHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)
Definition: dhcpcsvc.c:784
static VOID UpdateServiceStatus(DWORD dwState)
Definition: dhcpcsvc.c:759
SERVICE_STATUS_HANDLE ServiceStatusHandle
Definition: dhcpcsvc.c:18
DWORD APIENTRY DhcpAcquireParametersByBroadcast(_In_ PWSTR AdapterName)
Definition: dhcpcsvc.c:275
DWORD APIENTRY DhcpStaticRefreshParams(DWORD AdapterIndex, DWORD Address, DWORD Netmask)
Definition: dhcpcsvc.c:719
DWORD APIENTRY DhcpNotifyConfigChangeEx(_In_ LPWSTR ServerName, _In_ LPWSTR AdapterName, _In_ BOOL NewIpAddress, _In_ DWORD IpIndex, _In_ DWORD IpAddress, _In_ DWORD SubnetMask, _In_ INT DhcpAction, _In_ DWORD Unknown8)
Definition: dhcpcsvc.c:499
handle_t __RPC_USER PDHCP_SERVER_NAME_bind(_In_ PDHCP_SERVER_NAME pszServerName)
Definition: dhcpcsvc.c:37
HANDLE hStopEvent
Definition: dhcpcsvc.c:20
DWORD APIENTRY DhcpRegisterParamChange(_In_ DWORD Flags, _In_ LPVOID Reserved, _In_ LPWSTR AdapterName, _In_ LPDHCPCAPI_CLASSID ClassId, _In_ DHCPCAPI_PARAMS_ARRAY Params, _Inout_ LPVOID Handle)
Definition: dhcpcsvc.c:579
SERVICE_STATUS ServiceStatus
Definition: dhcpcsvc.c:19
DWORD APIENTRY DhcpAcquireParameters(_In_ PWSTR AdapterName)
Definition: dhcpcsvc.c:243
DWORD APIENTRY DhcpRequestParams(_In_ DWORD Flags, _In_ PVOID Reserved, _In_ LPWSTR AdapterName, _In_ LPDHCPCAPI_CLASSID ClassId, _In_ DHCPCAPI_PARAMS_ARRAY SendParams, _Inout_ DHCPCAPI_PARAMS_ARRAY RecdParams, _In_ LPBYTE Buffer, _Inout_ LPDWORD pSize, _In_ LPWSTR RequestIdStr)
Definition: dhcpcsvc.c:659
DWORD APIENTRY DhcpNotifyConfigChange(_In_ LPWSTR ServerName, _In_ LPWSTR AdapterName, _In_ BOOL NewIpAddress, _In_ DWORD IpIndex, _In_ DWORD IpAddress, _In_ DWORD SubnetMask, _In_ INT DhcpAction)
Definition: dhcpcsvc.c:449
DWORD APIENTRY DhcpEnumClasses(_In_ DWORD Unknown1, _In_ PWSTR AdapterName, _In_ DWORD Unknown3, _In_ DWORD Unknown4)
Definition: dhcpcsvc.c:327
DWORD APIENTRY DhcpDeRegisterParamChange(_In_ DWORD Flags, _In_ LPVOID Reserved, _In_ LPVOID Event)
Definition: dhcpcsvc.c:297
void __RPC_FAR *__RPC_USER MIDL_user_allocate(SIZE_T len)
Definition: dhcpcsvc.c:26
VOID APIENTRY DhcpCApiCleanup(VOID)
Definition: dhcpcsvc.c:227
void __RPC_USER PDHCP_SERVER_NAME_unbind(_In_ PDHCP_SERVER_NAME pszServerName, _In_ handle_t hBinding)
Definition: dhcpcsvc.c:76
wchar_t * PDHCP_SERVER_NAME
Definition: dhcpcsvc.idl:7
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
#define APIENTRY
Definition: api.h:79
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
#define CloseHandle
Definition: compat.h:739
#define GetProcessHeap()
Definition: compat.h:736
#define ERROR_CALL_NOT_IMPLEMENTED
Definition: compat.h:102
#define ERROR_INVALID_PARAMETER
Definition: compat.h:101
#define DLL_PROCESS_ATTACH
Definition: compat.h:131
#define DLL_PROCESS_DETACH
Definition: compat.h:130
#define CP_ACP
Definition: compat.h:109
#define INVALID_HANDLE_VALUE
Definition: compat.h:731
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
#define WideCharToMultiByte
Definition: compat.h:111
#define HEAP_ZERO_MEMORY
Definition: compat.h:134
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
Definition: loader.c:85
MonoAssembly int argc
Definition: metahost.c:107
_ACRTIMP size_t __cdecl strlen(const char *)
Definition: string.c:1592
return ret
Definition: mutex.c:146
#define L(x)
Definition: resources.c:13
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
FxAutoRegKey hKey
ULONG Handle
Definition: gdb_input.c:15
GLenum GLsizei len
Definition: glext.h:6722
#define DbgPrint
Definition: hal.h:12
#define EXCEPTION_EXECUTE_HANDLER
Definition: excpt.h:90
static IN DWORD IN LPVOID lpvReserved
_Null_terminated_ char * PSZ
Definition: minwindef.h:56
static PVOID ptr
Definition: dispmode.c:27
#define _swprintf(buf, format,...)
Definition: sprintf.c:56
#define argv
Definition: mplay32.c:18
#define closesocket
Definition: ncftp.h:477
_Must_inspect_result_ _Out_ PNDIS_STATUS _Out_ PNDIS_STATUS _Out_ PNDIS_HANDLE _Out_ PUINT _In_ UINT _In_ NDIS_HANDLE _In_ NDIS_HANDLE _In_ PNDIS_STRING AdapterName
Definition: ndis.h:6016
#define _Inout_
Definition: no_sal2.h:162
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define REG_BINARY
Definition: nt_native.h:1499
#define KEY_QUERY_VALUE
Definition: nt_native.h:1019
#define KEY_SET_VALUE
Definition: nt_native.h:1020
BYTE * PBYTE
Definition: pedump.c:66
short WCHAR
Definition: pedump.c:58
static WCHAR Address[46]
Definition: ping.c:68
#define SERVICE_STOPPED
Definition: winsvc.h:21
#define SERVICE_ACCEPT_STOP
Definition: winsvc.h:28
#define SERVICE_STOP_PENDING
Definition: winsvc.h:23
#define SERVICE_CONTROL_SHUTDOWN
Definition: winsvc.h:46
#define SERVICE_START_PENDING
Definition: winsvc.h:22
#define SERVICE_RUNNING
Definition: winsvc.h:24
#define SERVICE_CONTROL_STOP
Definition: winsvc.h:42
#define SERVICE_ACCEPT_SHUTDOWN
Definition: winsvc.h:30
#define SERVICE_CONTROL_INTERROGATE
Definition: winsvc.h:45
RPC_STATUS WINAPI RpcBindingFromStringBindingW(RPC_WSTR StringBinding, RPC_BINDING_HANDLE *Binding)
Definition: rpc_binding.c:862
RPC_STATUS WINAPI RpcStringBindingComposeW(RPC_WSTR ObjUuid, RPC_WSTR Protseq, RPC_WSTR NetworkAddr, RPC_WSTR Endpoint, RPC_WSTR Options, RPC_WSTR *StringBinding)
Definition: rpc_binding.c:493
RPC_STATUS WINAPI RpcBindingFree(RPC_BINDING_HANDLE *Binding)
Definition: rpc_binding.c:769
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
Definition: rpcrt4_main.c:771
RPC_STATUS WINAPI RpcStringFreeW(RPC_WSTR *String)
Definition: rpcrt4_main.c:181
SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR lpServiceName, LPHANDLER_FUNCTION_EX lpHandlerProc, LPVOID lpContext)
Definition: sctrl.c:831
BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus)
Definition: sctrl.c:1016
#define RpcEndExcept
Definition: rpc.h:123
#define __RPC_FAR
Definition: rpc.h:52
#define RpcTryExcept
Definition: rpc.h:121
#define RpcExcept(expr)
Definition: rpc.h:122
long RPC_STATUS
Definition: rpc.h:48
#define __RPC_USER
Definition: rpc.h:61
#define RpcExceptionCode()
Definition: rpc.h:127
#define STATUS_SUCCESS
Definition: shellext.h:65
#define DPRINT
Definition: sndvol32.h:73
DWORD dwServiceType
Definition: winsvc.h:105
DWORD dwWin32ExitCode
Definition: winsvc.h:108
DWORD dwControlsAccepted
Definition: winsvc.h:107
DWORD dwWaitHint
Definition: winsvc.h:111
DWORD dwCurrentState
Definition: winsvc.h:106
DWORD dwCheckPoint
Definition: winsvc.h:110
DWORD dwServiceSpecificExitCode
Definition: winsvc.h:109
Definition: ps.c:97
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
Definition: synch.c:82
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
Definition: synch.c:587
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
Definition: synch.c:669
uint16_t * PWSTR
Definition: typedefs.h:56
unsigned char * LPBYTE
Definition: typedefs.h:53
uint16_t * LPWSTR
Definition: typedefs.h:56
ULONG_PTR SIZE_T
Definition: typedefs.h:80
uint32_t * LPDWORD
Definition: typedefs.h:59
int32_t INT
Definition: typedefs.h:58
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
Definition: wdffdo.h:469
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
Definition: wdfrequest.h:308
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
#define CreateEvent
Definition: winbase.h:3497
_Reserved_ PVOID Reserved
Definition: winddi.h:3974
#define WINAPI
Definition: msvc.h:6
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define INVALID_SOCKET
Definition: winsock.h:326
UINT_PTR SOCKET
Definition: winsock.h:41
_Must_inspect_result_ _In_ ULONG Flags
Definition: wsk.h:170
#define SERVICE_WIN32_SHARE_PROCESS
Definition: cmtypes.h:963