From c87482b1df14fbb7f384d884ebc532228a8d00e9 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Sat, 15 Dec 2018 17:17:14 +0100 Subject: [PATCH] [NETAPI32] Implement NetRegisterDomainNameChangeNotification() and NetUnregisterDomainNameChangeNotification(). --- dll/win32/netapi32/misc.c | 52 ++++++++++++++++++++++++++++++++ dll/win32/netapi32/netapi32.spec | 4 +-- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/dll/win32/netapi32/misc.c b/dll/win32/netapi32/misc.c index 650068fa96d..0d236e2ed48 100644 --- a/dll/win32/netapi32/misc.c +++ b/dll/win32/netapi32/misc.c @@ -18,6 +18,38 @@ WINE_DEFAULT_DEBUG_CHANNEL(netapi32); /* FUNCTIONS *****************************************************************/ +NET_API_STATUS +WINAPI +NetRegisterDomainNameChangeNotification( + _Out_ PHANDLE NotificationEventHandle) +{ + HANDLE EventHandle; + NTSTATUS Status; + + TRACE("NetRegisterDomainNameChangeNotification(%p)\n", + NotificationEventHandle); + + if (NotificationEventHandle == NULL) + return ERROR_INVALID_PARAMETER; + + EventHandle = CreateEventW(NULL, FALSE, FALSE, NULL); + if (EventHandle == NULL) + return GetLastError(); + + Status = LsaRegisterPolicyChangeNotification(PolicyNotifyDnsDomainInformation, + NotificationEventHandle); + if (!NT_SUCCESS(Status)) + { + CloseHandle(EventHandle); + return NetpNtStatusToApiStatus(Status); + } + + *NotificationEventHandle = EventHandle; + + return NERR_Success; +} + + NET_API_STATUS WINAPI NetStatisticsGet( @@ -83,6 +115,26 @@ NetStatisticsGet( } +NET_API_STATUS +WINAPI +NetUnregisterDomainNameChangeNotification( + _In_ HANDLE NotificationEventHandle) +{ + NTSTATUS Status; + + TRACE("NetUnregisterDomainNameChangeNotification(%p)\n", + NotificationEventHandle); + + if (NotificationEventHandle == NULL) + return ERROR_INVALID_PARAMETER; + + Status = LsaUnregisterPolicyChangeNotification(PolicyNotifyDnsDomainInformation, + NotificationEventHandle); + + return NetpNtStatusToApiStatus(Status); +} + + NET_API_STATUS WINAPI NetpNtStatusToApiStatus( diff --git a/dll/win32/netapi32/netapi32.spec b/dll/win32/netapi32/netapi32.spec index d573ef5fa60..dda3b36b6ed 100644 --- a/dll/win32/netapi32/netapi32.spec +++ b/dll/win32/netapi32/netapi32.spec @@ -181,7 +181,7 @@ @ stdcall NetMessageNameEnum(wstr long ptr long ptr ptr ptr) @ stdcall NetMessageNameGetInfo(wstr wstr long ptr) @ stdcall NetQueryDisplayInformation(wstr long long long long ptr ptr) -@ stub NetRegisterDomainNameChangeNotification +@ stdcall NetRegisterDomainNameChangeNotification(ptr) @ stub NetRemoteComputerSupports @ stdcall NetRemoteTOD(wstr ptr) @ stdcall NetRemoveAlternateComputerName(wstr wstr wstr wstr long) @@ -234,7 +234,7 @@ @ stdcall NetShareSetInfo(wstr wstr long ptr ptr) @ stdcall NetStatisticsGet(wstr wstr long long ptr) @ stdcall NetUnjoinDomain(wstr wstr wstr long) -@ stub NetUnregisterDomainNameChangeNotification +@ stdcall NetUnregisterDomainNameChangeNotification(ptr) @ stdcall NetUseAdd(wstr long ptr ptr) @ stdcall NetUseDel(wstr wstr long) @ stdcall NetUseEnum(wstr long ptr long ptr ptr ptr) -- 2.17.1