276 {
287
289
292 {
293 DbgPrint(
"DHCP: Could not create security descriptor for pipe\n");
295 }
296
300
305 1,
309 &SecurityAttributes );
312 {
313 DbgPrint(
"DHCP: Could not create named pipe\n");
315 }
316
319
321 {
323 if (!Connected)
324 {
327 {
329 DPRINT(
"WaitForMultipleObjects() returned %lu\n", dwError);
331 {
333 &Overlapped,
336 }
338 {
342 break;
343 }
344 }
345 }
346
347 if (!Connected) {
348 DbgPrint(
"DHCP: Could not connect named pipe\n");
351 break;
352 }
353
356 {
359 {
361 DPRINT(
"WaitForMultipleObjects() returned %lu\n", dwError);
363 {
365 &Overlapped,
368 }
370 {
375 break;
376 }
377 }
378 }
379
381 {
383 {
386 break;
387
390 break;
391
394 break;
395
398 break;
399
402 break;
403
406 break;
407
410 break;
411
412 default:
413 DPRINT1(
"Unrecognized request type %d\n", Req.
Type);
417 break;
418 }
419 }
421 }
422
423 DPRINT(
"Pipe thread stopped!\n");
424
426}
DWORD DSQueryHWInfo(PipeSendFunc Send, HANDLE CommPipe, COMM_DHCP_REQ *Req)
DWORD DSReleaseParams(_In_ PipeSendFunc Send, _In_ HANDLE CommPipe, _Out_ COMM_DHCP_REQ *Req)
DWORD DSStaticRefreshParams(PipeSendFunc Send, HANDLE CommPipe, COMM_DHCP_REQ *Req)
DWORD DSRenewIpAddressLease(PipeSendFunc Send, HANDLE CommPipe, COMM_DHCP_REQ *Req)
DWORD DSReleaseIpAddressLease(PipeSendFunc Send, HANDLE CommPipe, COMM_DHCP_REQ *Req)
DWORD DSLeaseIpAddress(PipeSendFunc Send, HANDLE CommPipe, COMM_DHCP_REQ *Req)
DWORD DSAcquireParams(_In_ PipeSendFunc Send, _In_ HANDLE CommPipe, _Out_ COMM_DHCP_REQ *Req)
#define COMM_PIPE_DEFAULT_TIMEOUT
DWORD CreateDhcpPipeSecurity(PSECURITY_DESCRIPTOR *SecurityDescriptor)
Creates a security descriptor for the DHCP pipe service.
#define COMM_PIPE_OUTPUT_BUFFER
#define COMM_PIPE_INPUT_BUFFER
DWORD PipeSend(HANDLE CommPipe, COMM_DHCP_REPLY *Reply)
BOOL WINAPI CancelIo(IN HANDLE hFile)
struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES
#define ReadFile(a, b, c, d, e)
#define INVALID_HANDLE_VALUE
#define FILE_FLAG_OVERLAPPED
BOOL WINAPI ConnectNamedPipe(IN HANDLE hNamedPipe, IN LPOVERLAPPED lpOverlapped)
BOOL WINAPI DisconnectNamedPipe(HANDLE hNamedPipe)
HANDLE WINAPI CreateNamedPipeW(LPCWSTR lpName, DWORD dwOpenMode, DWORD dwPipeMode, DWORD nMaxInstances, DWORD nOutBufferSize, DWORD nInBufferSize, DWORD nDefaultTimeOut, LPSECURITY_ATTRIBUTES lpSecurityAttributes)
#define FILE_FLAG_FIRST_PIPE_INSTANCE
@ DhcpReqStaticRefreshParams
@ DhcpReqReleaseIpAddress
LPVOID lpSecurityDescriptor
DWORD WINAPI WaitForMultipleObjects(IN DWORD nCount, IN CONST HANDLE *lpHandles, IN BOOL bWaitAll, IN DWORD dwMilliseconds)
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesRead
#define PIPE_ACCESS_DUPLEX
#define PIPE_READMODE_MESSAGE
#define PIPE_TYPE_MESSAGE
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_Inout_opt_ PVOID Parameter