44 DPRINT(
"PDHCP_SERVER_NAME_bind() called\n");
63 DPRINT1(
"RpcBindingFromStringBinding returned 0x%x\n",
status);
82 DPRINT(
"PDHCP_SERVER_NAME_unbind() called\n");
99 DWORD dwUnicodeSize = 0, dwAnsiSize = 0;
103 DPRINT(
"SetBinaryClassId(%S)\n", pszAdapterName);
106 L"System\\CurrentControlSet\\Services\\Tcpip\\Parameters\\Interfaces\\%s",
108 DPRINT(
"KeyName %S\n", szKeyName);
117 DPRINT1(
"Error %lu\n", dwError);
127 DPRINT(
"UnicodeSize %lu\n", dwUnicodeSize);
130 if (pszUnicodeBuffer ==
NULL)
133 DPRINT1(
"Error %lu\n", dwError);
141 (
PBYTE)pszUnicodeBuffer,
145 DPRINT1(
"Error %lu\n", dwError);
157 DPRINT(
"AnsiSize %lu\n", dwAnsiSize);
160 if (pszAnsiBuffer ==
NULL)
163 DPRINT1(
"Error %lu\n", dwError);
175 DPRINT(
"AnsiBuffer %s\n", pszAnsiBuffer);
181 (
PBYTE)pszAnsiBuffer,
185 DPRINT1(
"Error %lu\n", dwError);
195 if (pszUnicodeBuffer)
210 for (
i = 0;
i < ParamsArray->nParams;
i++)
212 if ((ParamsArray->Params[
i].OptionId == OptionId) &&
213 (ParamsArray->Params[
i].IsVendor == IsVendor))
214 return &ParamsArray->Params[
i];
232 if (Results->DataSize > *pSize)
234 *pSize = Results->DataSize;
239 for (
i = 0;
i < Results->ResultsCount;
i++)
242 Results->Results[
i].OptionId,
243 Results->Results[
i].IsVendor);
247 &Results->Data[Results->Results[
i].DataOffset],
248 Results->Results[
i].DataSize);
253 Ptr += Results->Results[
i].DataSize;
257 *pSize = Results->DataSize;
394 DPRINT1(
"DhcpEnumClasses(%lx %S %lx %lx)\n",
464 DPRINT1(
"DhcpHandlePnPEvent(%lx %lx %S %p %lx)\n",
467 if ((Unknown1 != 0) || (Unknown2 != 1) || (PnpEvent ==
NULL) || (
Unknown5 != 0))
470 if (PnpEvent->Unknown5)
519 DPRINT(
"DhcpNotifyConfigChange(%S %S %lu %lu %lu %lu %d)\n",
520 ServerName,
AdapterName, NewIpAddress, IpIndex, IpAddress, SubnetMask, DhcpAction);
522 IpIndex, IpAddress, SubnetMask, DhcpAction, 0);
572 DPRINT1(
"DHCPCSVC: DhcpNotifyConfigChangeEx not implemented yet\n");
573 DPRINT1(
"DhcpNotifyConfigChangeEx(%S %S %lu %lu %lu %lu %d %lu)\n",
574 ServerName,
AdapterName, NewIpAddress, IpIndex, IpAddress, SubnetMask, DhcpAction, Unknown8);
581 if ((NewIpAddress !=
FALSE) ||
587 else if (DhcpAction == 2)
589 if ((NewIpAddress ==
FALSE) ||
595 else if (DhcpAction == 0)
618 else if (DhcpAction == 2)
630 else if (DhcpAction == 0)
703 DPRINT(
"DhcpRemoveDNSRegistrations()\n");
707 ret = Client_RemoveDNSRegistrations(
NULL);
734 DPRINT(
"DhcpRequestParams(%lx %p %S %p %lu %p %lu %p %p %p %S)\n",
736 RecdParams.nParams, RecdParams.Params,
Buffer, pSize, RequestIdStr);
748 if (ClassId->Flags != 0)
751 if ((ClassId->Data ==
NULL) || (ClassId->nBytesData == 0))
755 if ((SendParams.nParams != 0) && (SendParams.Params ==
NULL))
758 if (RecdParams.Params ==
NULL)
765 ret = Client_RequestParams(
NULL,
801 DPRINT1(
"DHCPCAPI_REQUEST_PERSISTENT is not supported yet!\n");
815 DPRINT(
"DhcpStaticRefreshParams()\n");
819 ret = Client_StaticRefreshParams(
NULL, AdapterIndex,
Address, Netmask);
838 DPRINT1(
"DhcpUndoRequestParams(%lx %p %S %S)\n",
936 DbgPrint(
"DHCPCSVC: init_client() failed!\n");
948 DbgPrint(
"DHCPCSVC: PipeInit() failed!\n");
959 DbgPrint(
"DHCPCSVC: StartAdapterDiscovery() failed!\n");
982 DPRINT(
"Wait for pipe thread to close! %p\n", hPipeThread);
985 DPRINT(
"Waiting for pipe thread\n");
990 DPRINT(
"Wait for discovery thread to close! %p\n", hDiscoveryThread);
993 DPRINT(
"Waiting for discovery thread\n");
998 DPRINT(
"Closing events!\n");
static SERVICE_STATUS_HANDLE(WINAPI *pRegisterServiceCtrlHandlerExA)(LPCSTR
PRTL_UNICODE_STRING_BUFFER PULONG PULONG Unknown4
static DWORD const fdwReason
HANDLE StartAdapterDiscovery(HANDLE hStopEvent)
DWORD __stdcall Server_EnableDhcp(_In_ PDHCP_SERVER_NAME ServerName, _In_ LPWSTR AdapterName, _In_ BOOL Enable)
void dispatch(HANDLE hStopEvent)
#define DH_DbgPrint(_t_, _x_)
#define RegCloseKey(hKey)
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD IN DWORD IN DWORD Unknown5
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES IN DWORD Unknown3
#define ERROR_NOT_ENOUGH_MEMORY
#define DHCPCAPI_REQUEST_SYNCHRONOUS
#define DHCPCAPI_REQUEST_PERSISTENT
#define DHCPCAPI_REGISTER_HANDLE_EVENT
static WCHAR ServiceName[]
DWORD APIENTRY DhcpCApiInitialize(_Out_ LPDWORD Version)
DWORD APIENTRY DhcpHandlePnPEvent(_In_ DWORD Unknown1, _In_ DWORD Unknown2, _In_ PWSTR AdapterName, _In_ PDHCP_PNP_EVENT PnpEvent, _In_ DWORD Unknown5)
DWORD APIENTRY DhcpRemoveDNSRegistrations(VOID)
HANDLE hAdapterStateChangedEvent
static DWORD SetBinaryClassId(_In_ PWSTR pszAdapterName)
DWORD APIENTRY DhcpReleaseParameters(_In_ PWSTR AdapterName)
DWORD APIENTRY DhcpUndoRequestParams(_In_ DWORD Flags, _In_ LPVOID Reserved, _In_ LPWSTR AdapterName, _In_ LPWSTR RequestIdStr)
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
DWORD APIENTRY DhcpFallbackRefreshParams(_In_ PWSTR AdapterName)
void __RPC_USER MIDL_user_free(void __RPC_FAR *ptr)
VOID WINAPI ServiceMain(DWORD argc, LPWSTR *argv)
static DWORD WINAPI ServiceControlHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)
static VOID UpdateServiceStatus(DWORD dwState)
SERVICE_STATUS_HANDLE ServiceStatusHandle
DWORD APIENTRY DhcpAcquireParametersByBroadcast(_In_ PWSTR AdapterName)
DWORD APIENTRY DhcpStaticRefreshParams(DWORD AdapterIndex, DWORD Address, DWORD Netmask)
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)
handle_t __RPC_USER PDHCP_SERVER_NAME_bind(_In_ PDHCP_SERVER_NAME pszServerName)
DWORD APIENTRY DhcpRegisterParamChange(_In_ DWORD Flags, _In_ LPVOID Reserved, _In_ LPWSTR AdapterName, _In_ LPDHCPCAPI_CLASSID ClassId, _In_ DHCPCAPI_PARAMS_ARRAY Params, _Inout_ LPVOID Handle)
static DWORD MapRequestResultData(_In_ LPDHCPCAPI_RESULT_ARRAY Results, _Inout_ LPDHCPCAPI_PARAMS_ARRAY RecdParams, _In_ LPBYTE Buffer, _Inout_ LPDWORD pSize)
SERVICE_STATUS ServiceStatus
DWORD APIENTRY DhcpAcquireParameters(_In_ PWSTR AdapterName)
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)
DWORD APIENTRY DhcpNotifyConfigChange(_In_ LPWSTR ServerName, _In_ LPWSTR AdapterName, _In_ BOOL NewIpAddress, _In_ DWORD IpIndex, _In_ DWORD IpAddress, _In_ DWORD SubnetMask, _In_ INT DhcpAction)
DWORD APIENTRY DhcpEnumClasses(_In_ DWORD Unknown1, _In_ PWSTR AdapterName, _In_ DWORD Unknown3, _In_ DWORD Unknown4)
DWORD APIENTRY DhcpDeRegisterParamChange(_In_ DWORD Flags, _In_ LPVOID Reserved, _In_ LPVOID Event)
void __RPC_FAR *__RPC_USER MIDL_user_allocate(SIZE_T len)
VOID APIENTRY DhcpCApiCleanup(VOID)
static PDHCPAPI_PARAMS FindParam(_In_ LPDHCPCAPI_PARAMS_ARRAY ParamsArray, _In_ ULONG OptionId, _In_ BOOL IsVendor)
void __RPC_USER PDHCP_SERVER_NAME_unbind(_In_ PDHCP_SERVER_NAME pszServerName, _In_ handle_t hBinding)
wchar_t * PDHCP_SERVER_NAME
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
#define ERROR_CALL_NOT_IMPLEMENTED
#define ERROR_INVALID_PARAMETER
#define DLL_PROCESS_ATTACH
#define DLL_PROCESS_DETACH
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
#define WideCharToMultiByte
BOOL WINAPI DisableThreadLibraryCalls(IN HMODULE hLibModule)
_ACRTIMP size_t __cdecl strlen(const char *)
_Must_inspect_result_ _In_ PFSRTL_PER_STREAM_CONTEXT Ptr
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define EXCEPTION_EXECUTE_HANDLER
static IN DWORD IN LPVOID lpvReserved
_Null_terminated_ char * PSZ
#define _swprintf(buf, format,...)
_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
#define SERVICE_ACCEPT_STOP
#define SERVICE_STOP_PENDING
#define SERVICE_CONTROL_SHUTDOWN
#define SERVICE_START_PENDING
#define SERVICE_CONTROL_STOP
#define SERVICE_ACCEPT_SHUTDOWN
#define SERVICE_CONTROL_INTERROGATE
RPC_STATUS WINAPI RpcBindingFromStringBindingW(RPC_WSTR StringBinding, RPC_BINDING_HANDLE *Binding)
RPC_STATUS WINAPI RpcStringBindingComposeW(RPC_WSTR ObjUuid, RPC_WSTR Protseq, RPC_WSTR NetworkAddr, RPC_WSTR Endpoint, RPC_WSTR Options, RPC_WSTR *StringBinding)
RPC_STATUS WINAPI RpcBindingFree(RPC_BINDING_HANDLE *Binding)
LONG WINAPI I_RpcMapWin32Status(RPC_STATUS status)
RPC_STATUS WINAPI RpcStringFreeW(RPC_WSTR *String)
SERVICE_STATUS_HANDLE WINAPI RegisterServiceCtrlHandlerExW(LPCWSTR lpServiceName, LPHANDLER_FUNCTION_EX lpHandlerProc, LPVOID lpContext)
BOOL WINAPI SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus, LPSERVICE_STATUS lpServiceStatus)
#define RpcExceptionCode()
LPDHCPCAPI_RESULTS Results
DWORD dwServiceSpecificExitCode
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateEventW(IN LPSECURITY_ATTRIBUTES lpEventAttributes OPTIONAL, IN BOOL bManualReset, IN BOOL bInitialState, IN LPCWSTR lpName OPTIONAL)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE _In_ USHORT _In_ USHORT Version
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
DWORD WINAPI GetLastError(void)
_Reserved_ PVOID Reserved
#define HKEY_LOCAL_MACHINE
_Must_inspect_result_ _In_ ULONG Flags
#define SERVICE_WIN32_SHARE_PROCESS