[NETLOGON] Add the netlogon service.

This commit is contained in:
Eric Kohl 2019-05-29 13:27:49 +02:00
parent ec14b4c50a
commit 78600cf223
7 changed files with 1079 additions and 0 deletions

View file

@ -3,6 +3,7 @@ add_subdirectory(audiosrv)
add_subdirectory(dcomlaunch)
add_subdirectory(dhcpcsvc)
add_subdirectory(eventlog)
add_subdirectory(netlogon)
add_subdirectory(nfsd)
add_subdirectory(rpcss)
add_subdirectory(schedsvc)

View file

@ -0,0 +1,22 @@
include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl)
add_rpc_files(server ${REACTOS_SOURCE_DIR}/sdk/include/reactos/idl/netlogon.idl)
spec2def(netlogon.dll netlogon.spec ADD_IMPORTLIB)
list(APPEND SOURCE
netlogon.c
rpcserver.c
precomp.h)
add_library(netlogon MODULE
${SOURCE}
netlogon.rc
${CMAKE_CURRENT_BINARY_DIR}/netlogon_s.c
${CMAKE_CURRENT_BINARY_DIR}/netlogon_stubs.c
${CMAKE_CURRENT_BINARY_DIR}/netlogon.def)
set_module_type(netlogon win32dll UNICODE)
target_link_libraries(netlogon wine ${PSEH_LIB})
add_importlibs(netlogon advapi32 rpcrt4 msvcrt kernel32 ntdll)
add_pch(netlogon precomp.h SOURCE)
add_cd_file(TARGET netlogon DESTINATION reactos/system32 FOR all)

View file

@ -0,0 +1,183 @@
/*
* PROJECT: ReactOS NetLogon Service
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* PURPOSE: NetLogon service RPC server
* COPYRIGHT: Eric Kohl 2019 <eric.kohl@reactos.org>
*/
/* INCLUDES *****************************************************************/
#include "precomp.h"
WINE_DEFAULT_DEBUG_CHANNEL(netlogon);
/* GLOBALS ******************************************************************/
HINSTANCE hDllInstance;
static WCHAR ServiceName[] = L"netlogon";
static SERVICE_STATUS_HANDLE ServiceStatusHandle;
static SERVICE_STATUS ServiceStatus;
/* FUNCTIONS *****************************************************************/
static
VOID
UpdateServiceStatus(
DWORD dwState)
{
ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
ServiceStatus.dwCurrentState = dwState;
ServiceStatus.dwControlsAccepted = 0;
ServiceStatus.dwWin32ExitCode = 0;
ServiceStatus.dwServiceSpecificExitCode = 0;
ServiceStatus.dwCheckPoint = 0;
if (dwState == SERVICE_START_PENDING ||
dwState == SERVICE_STOP_PENDING ||
dwState == SERVICE_PAUSE_PENDING ||
dwState == SERVICE_CONTINUE_PENDING)
ServiceStatus.dwWaitHint = 10000;
else
ServiceStatus.dwWaitHint = 0;
SetServiceStatus(ServiceStatusHandle,
&ServiceStatus);
}
static
DWORD
WINAPI
ServiceControlHandler(
DWORD dwControl,
DWORD dwEventType,
LPVOID lpEventData,
LPVOID lpContext)
{
TRACE("ServiceControlHandler()\n");
switch (dwControl)
{
case SERVICE_CONTROL_STOP:
TRACE(" SERVICE_CONTROL_STOP received\n");
/* Stop listening to incoming RPC messages */
RpcMgmtStopServerListening(NULL);
UpdateServiceStatus(SERVICE_STOPPED);
return ERROR_SUCCESS;
case SERVICE_CONTROL_PAUSE:
TRACE(" SERVICE_CONTROL_PAUSE received\n");
UpdateServiceStatus(SERVICE_PAUSED);
return ERROR_SUCCESS;
case SERVICE_CONTROL_CONTINUE:
TRACE(" SERVICE_CONTROL_CONTINUE received\n");
UpdateServiceStatus(SERVICE_RUNNING);
return ERROR_SUCCESS;
case SERVICE_CONTROL_INTERROGATE:
TRACE(" SERVICE_CONTROL_INTERROGATE received\n");
SetServiceStatus(ServiceStatusHandle,
&ServiceStatus);
return ERROR_SUCCESS;
case SERVICE_CONTROL_SHUTDOWN:
TRACE(" SERVICE_CONTROL_SHUTDOWN received\n");
UpdateServiceStatus(SERVICE_STOPPED);
return ERROR_SUCCESS;
default :
TRACE(" Control %lu received\n", dwControl);
return ERROR_CALL_NOT_IMPLEMENTED;
}
}
static
DWORD
ServiceInit(VOID)
{
HANDLE hThread;
hThread = CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)RpcThreadRoutine,
NULL,
0,
NULL);
if (!hThread)
{
ERR("Can't create PortThread\n");
return GetLastError();
}
else
CloseHandle(hThread);
return ERROR_SUCCESS;
}
VOID WINAPI
NlNetlogonMain(
_In_ INT ArgCount,
_In_ PWSTR *ArgVector)
{
DWORD dwError;
UNREFERENCED_PARAMETER(ArgCount);
UNREFERENCED_PARAMETER(ArgVector);
TRACE("NlNetlogonMain(%d %p)\n", ArgCount, ArgVector);
ServiceStatusHandle = RegisterServiceCtrlHandlerExW(ServiceName,
ServiceControlHandler,
NULL);
if (!ServiceStatusHandle)
{
ERR("RegisterServiceCtrlHandlerExW() failed! (Error %lu)\n", GetLastError());
return;
}
UpdateServiceStatus(SERVICE_START_PENDING);
dwError = ServiceInit();
if (dwError != ERROR_SUCCESS)
{
ERR("Service stopped (dwError: %lu\n", dwError);
UpdateServiceStatus(SERVICE_STOPPED);
return;
}
UpdateServiceStatus(SERVICE_RUNNING);
}
BOOL
WINAPI
DllMain(
_In_ HINSTANCE hinstDLL,
_In_ DWORD fdwReason,
_In_ PVOID pvReserved)
{
UNREFERENCED_PARAMETER(pvReserved);
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
DisableThreadLibraryCalls(hinstDLL);
hDllInstance = hinstDLL;
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
/* EOF */

View file

@ -0,0 +1,5 @@
#define REACTOS_VERSION_DLL
#define REACTOS_STR_FILE_DESCRIPTION "Net Logon Services Dll"
#define REACTOS_STR_INTERNAL_NAME "netlogon"
#define REACTOS_STR_ORIGINAL_FILENAME "netlogon.dll"
#include <reactos/version.rc>

View file

@ -0,0 +1,29 @@
@ stdcall DsrGetDcName(wstr wstr ptr ptr long ptr)
@ stdcall DsrGetDcNameEx2(wstr wstr long wstr ptr wstr long ptr)
@ stub I_DsGetDcCache
@ stub I_NetLogonAddressToSiteName
@ stub I_NetLogonAppendChangeLog
@ stub I_NetLogonCloseChangeLog
@ stub I_NetLogonFree
@ stub I_NetLogonGetAuthDataEx
@ stub I_NetLogonGetDirectDomain
@ stub I_NetLogonGetIpAddresses
@ stub I_NetLogonGetSerialNumber
@ stub I_NetLogonLdapLookup
@ stub I_NetLogonLdapLookupEx
@ stub I_NetLogonMixedDomain
@ stub I_NetLogonNewChangeLog
@ stub I_NetLogonReadChangeLog
@ stub I_NetLogonSendToSamOnPdc
@ stub I_NetLogonSetServiceBits
@ stub I_NetNotifyDelta
@ stub I_NetNotifyDsChange
@ stub I_NetNotifyMachineAccount
@ stub I_NetNotifyNetlogonDllHandle
@ stub I_NetNotifyNtdsDsaDeletion
@ stub I_NetNotifyRole
@ stub I_NetNotifyTrustedDomain
@ stub InitSecurityInterfaceW
@ stdcall NetrLogonSamLogoff(wstr wstr ptr ptr long ptr)
@ stdcall NetrLogonSamLogon(wstr wstr ptr ptr long ptr long ptr ptr)
@ stdcall NlNetlogonMain(long ptr)

View file

@ -0,0 +1,34 @@
/*
* PROJECT: ReactOS NetLogon Service
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* PURPOSE: NetLogon service RPC server
* COPYRIGHT: Eric Kohl 2019 <eric.kohl@reactos.org>
*/
#ifndef _NETLOGON_PCH_
#define _NETLOGON_PCH_
#define WIN32_NO_STATUS
#define _INC_WINDOWS
#define COM_NO_WINDOWS_H
#include <limits.h>
#include <stdarg.h>
#include <stdio.h>
#include <windef.h>
#include <winbase.h>
#include <winreg.h>
#include <winsvc.h>
#include <lmerr.h>
#include <netlogon_s.h>
#include <wine/debug.h>
extern HINSTANCE hDllInstance;
DWORD
WINAPI
RpcThreadRoutine(
LPVOID lpParameter);
#endif /* _NETLOGON_PCH_ */

View file

@ -0,0 +1,805 @@
/*
* PROJECT: ReactOS NetLogon Service
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
* PURPOSE: NetLogon service RPC server
* COPYRIGHT: Eric Kohl 2019 <eric.kohl@reactos.org>
*/
/* INCLUDES *****************************************************************/
#include "precomp.h"
//#include "lmerr.h"
WINE_DEFAULT_DEBUG_CHANNEL(netlogon);
/* FUNCTIONS *****************************************************************/
DWORD
WINAPI
RpcThreadRoutine(
LPVOID lpParameter)
{
RPC_STATUS Status;
Status = RpcServerUseProtseqEpW(L"ncacn_np", 20, L"\\pipe\\netlogon", NULL);
if (Status != RPC_S_OK)
{
ERR("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status);
return 0;
}
Status = RpcServerRegisterIf(logon_v1_0_s_ifspec, NULL, NULL);
if (Status != RPC_S_OK)
{
ERR("RpcServerRegisterIf() failed (Status %lx)\n", Status);
return 0;
}
Status = RpcServerListen(1, RPC_C_LISTEN_MAX_CALLS_DEFAULT, FALSE);
if (Status != RPC_S_OK)
{
ERR("RpcServerListen() failed (Status %lx)\n", Status);
}
return 0;
}
void __RPC_FAR * __RPC_USER midl_user_allocate(SIZE_T len)
{
return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, len);
}
void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
{
HeapFree(GetProcessHeap(), 0, ptr);
}
/* Function 0 */
NET_API_STATUS
__stdcall
NetrLogonUasLogon(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_ wchar_t *UserName,
_In_ wchar_t *Workstation,
_Out_ PNETLOGON_VALIDATION_UAS_INFO *ValidationInformation)
{
UNIMPLEMENTED;
return 0;
}
/* Function 1 */
NET_API_STATUS
__stdcall
NetrLogonUasLogoff(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_ wchar_t *UserName,
_In_ wchar_t *Workstation,
_Out_ PNETLOGON_LOGOFF_UAS_INFO LogoffInformation)
{
UNIMPLEMENTED;
return 0;
}
/* Function 2 */
NTSTATUS
__stdcall
NetrLogonSamLogon(
_In_opt_ LOGONSRV_HANDLE LogonServer,
_In_opt_ wchar_t *ComputerName,
_In_opt_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_opt_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ NETLOGON_LOGON_INFO_CLASS LogonLevel,
_In_ PNETLOGON_LEVEL LogonInformation,
_In_ NETLOGON_VALIDATION_INFO_CLASS ValidationLevel,
_Out_ PNETLOGON_VALIDATION ValidationInformation,
_Out_ UCHAR *Authoritative)
{
UNIMPLEMENTED;
return 0;
}
/* Function 3 */
NTSTATUS
__stdcall
NetrLogonSamLogoff(
_In_opt_ LOGONSRV_HANDLE LogonServer,
_In_opt_ wchar_t *ComputerName,
_In_opt_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_opt_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ NETLOGON_LOGON_INFO_CLASS LogonLevel,
_In_ PNETLOGON_LEVEL LogonInformation)
{
UNIMPLEMENTED;
return 0;
}
/* Function 4 */
NTSTATUS
__stdcall
NetrServerReqChallenge(
_In_opt_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_CREDENTIAL ClientChallenge,
_Out_ PNETLOGON_CREDENTIAL ServerChallenge)
{
UNIMPLEMENTED;
return 0;
}
/* Function 5 */
NTSTATUS
__stdcall
NetrServerAuthenticate(
_In_opt_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *AccountName,
_In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_CREDENTIAL ClientCredential,
_Out_ PNETLOGON_CREDENTIAL ServerCredential)
{
UNIMPLEMENTED;
return 0;
}
/* Function 6 */
NTSTATUS
__stdcall
NetrServerPasswordSet(
_In_opt_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *AccountName,
_In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ PENCRYPTED_NT_OWF_PASSWORD UasNewPassword)
{
UNIMPLEMENTED;
return 0;
}
/* Function 7 */
NTSTATUS
__stdcall
NetrDatabaseDeltas(
_In_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ DWORD DatabaseID,
_Inout_ PNLPR_MODIFIED_COUNT DomainModifiedCount,
_Out_ PNETLOGON_DELTA_ENUM_ARRAY *DeltaArray,
_In_ DWORD PreferredMaximumLength)
{
UNIMPLEMENTED;
return 0;
}
/* Function 8 */
NTSTATUS
__stdcall
NetrDatabaseSync(
_In_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ DWORD DatabaseID,
_Inout_ ULONG *SyncContext,
_Out_ PNETLOGON_DELTA_ENUM_ARRAY *DeltaArray,
_In_ DWORD PreferredMaximumLength)
{
UNIMPLEMENTED;
return 0;
}
/* Function 9 */
NTSTATUS
__stdcall
NetrAccountDeltas(
_In_opt_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t * ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ PUAS_INFO_0 RecordId,
_In_ DWORD Count,
_In_ DWORD Level,
_Out_ UCHAR *Buffer,
_In_ DWORD BufferSize,
_Out_ ULONG *CountReturned,
_Out_ ULONG *TotalEntries,
_Out_ PUAS_INFO_0 NextRecordId)
{
UNIMPLEMENTED;
return 0;
}
/* Function 10 */
NTSTATUS
__stdcall
NetrAccountSync(
_In_opt_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ DWORD Reference,
_In_ DWORD Level,
_Out_ UCHAR *Buffer,
_In_ DWORD BufferSize,
_Out_ ULONG *CountReturned,
_Out_ ULONG *TotalEntries,
_Out_ ULONG *NextReference,
_Out_ PUAS_INFO_0 LastRecordId)
{
UNIMPLEMENTED;
return 0;
}
/* Function 11 */
NET_API_STATUS
__stdcall
NetrGetDCName(
_In_ LOGONSRV_HANDLE ServerName,
_In_opt_ wchar_t *DomainName,
_Out_ wchar_t **Buffer)
{
UNIMPLEMENTED;
return 0;
}
/* Function 12 */
NET_API_STATUS
__stdcall
NetrLogonControl(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_ DWORD FunctionCode,
_In_ DWORD QueryLevel,
_Out_ PNETLOGON_CONTROL_QUERY_INFORMATION Buffer)
{
UNIMPLEMENTED;
return 0;
}
/* Function 13 */
NET_API_STATUS
__stdcall
NetrGetAnyDCName(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_opt_ wchar_t *DomainName,
_Out_ wchar_t **Buffer)
{
UNIMPLEMENTED;
return 0;
}
/* Function 14 */
NET_API_STATUS
__stdcall
NetrLogonControl2(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_ DWORD FunctionCode,
_In_ DWORD QueryLevel,
_In_ PNETLOGON_CONTROL_DATA_INFORMATION Data,
_Out_ PNETLOGON_CONTROL_QUERY_INFORMATION Buffer)
{
UNIMPLEMENTED;
return 0;
}
/* Function 15 */
NTSTATUS
__stdcall
NetrServerAuthenticate2(
_In_opt_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *AccountName,
_In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_CREDENTIAL ClientCredential,
_Out_ PNETLOGON_CREDENTIAL ServerCredential,
_Inout_ ULONG *NegotiateFlags)
{
UNIMPLEMENTED;
return 0;
}
/* Function 16 */
NTSTATUS
__stdcall
NetrDatabaseSync2(
_In_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ DWORD DatabaseID,
_In_ SYNC_STATE RestartState,
_Inout_ ULONG *SyncContext,
_Out_ PNETLOGON_DELTA_ENUM_ARRAY *DeltaArray,
_In_ DWORD PreferredMaximumLength)
{
UNIMPLEMENTED;
return 0;
}
/* Function 17 */
NTSTATUS
__stdcall
NetrDatabaseRedo(
_In_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ UCHAR *ChangeLogEntry,
_In_ DWORD ChangeLogEntrySize,
_Out_ PNETLOGON_DELTA_ENUM_ARRAY *DeltaArray)
{
UNIMPLEMENTED;
return 0;
}
/* Function 18 */
NET_API_STATUS
__stdcall
NetrLogonControl2Ex(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_ DWORD FunctionCode,
_In_ DWORD QueryLevel,
_In_ PNETLOGON_CONTROL_DATA_INFORMATION Data,
_Out_ PNETLOGON_CONTROL_QUERY_INFORMATION Buffer)
{
UNIMPLEMENTED;
return 0;
}
/* Function 19 */
NTSTATUS
__stdcall
NetrEnumerateTrustedDomains(
_In_opt_ LOGONSRV_HANDLE ServerName,
_Out_ PDOMAIN_NAME_BUFFER DomainNameBuffer)
{
UNIMPLEMENTED;
return 0;
}
/* Function 20 */
NET_API_STATUS
__stdcall
DsrGetDcName(
_In_opt_ LOGONSRV_HANDLE ComputerName,
_In_opt_ wchar_t *DomainName,
_In_opt_ GUID *DomainGuid,
_In_opt_ GUID *SiteGuid,
_In_ ULONG Flags,
_Out_ PDOMAIN_CONTROLLER_INFOW *DomainControllerInfo)
{
UNIMPLEMENTED;
return 0;
}
/* Function 21 */
NTSTATUS
__stdcall
NetrLogonGetCapabilities(
_In_ LOGONSRV_HANDLE ServerName,
_In_opt_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ DWORD QueryLevel,
_Out_ PNETLOGON_CAPABILITIES ServerCapabilities)
{
UNIMPLEMENTED;
return 0;
}
/* Function 22 */
NTSTATUS
__stdcall
NetrLogonSetServiceBits(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_ DWORD ServiceBitsOfInterest,
_In_ DWORD ServiceBits)
{
UNIMPLEMENTED;
return 0;
}
/* Function 23 */
NET_API_STATUS
__stdcall
NetrLogonGetTrustRid(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_opt_ wchar_t *DomainName,
_Out_ ULONG *Rid)
{
UNIMPLEMENTED;
return 0;
}
/* Function 24 */
NET_API_STATUS
__stdcall
NetrLogonComputeServerDigest(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_ ULONG Rid,
_In_ UCHAR *Message,
_In_ ULONG MessageSize,
_Out_ CHAR NewMessageDigest[16],
_Out_ CHAR OldMessageDigest[16])
{
UNIMPLEMENTED;
return 0;
}
/* Function 25 */
NET_API_STATUS
__stdcall
NetrLogonComputeClientDigest(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_opt_ wchar_t *DomainName,
_In_ UCHAR *Message,
_In_ ULONG MessageSize,
_Out_ CHAR NewMessageDigest[16],
_Out_ CHAR OldMessageDigest[16])
{
UNIMPLEMENTED;
return 0;
}
/* Function 26 */
NTSTATUS
__stdcall
NetrServerAuthenticate3(
_In_opt_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *AccountName,
_In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_CREDENTIAL ClientCredential,
_Out_ PNETLOGON_CREDENTIAL ServerCredential,
_Inout_ ULONG *NegotiateFlags,
_Out_ ULONG *AccountRid)
{
UNIMPLEMENTED;
return 0;
}
/* Function 27 */
NET_API_STATUS
__stdcall
DsrGetDcNameEx(
_In_opt_ LOGONSRV_HANDLE ComputerName,
_In_opt_ wchar_t *DomainName,
_In_opt_ GUID *DomainGuid,
_In_opt_ wchar_t *SiteName,
_In_ ULONG Flags,
_Out_ PDOMAIN_CONTROLLER_INFOW *DomainControllerInfo)
{
UNIMPLEMENTED;
return 0;
}
/* Function 28 */
NET_API_STATUS
__stdcall
DsrGetSiteName(
_In_opt_ LOGONSRV_HANDLE ComputerName,
_Out_ wchar_t **SiteName)
{
UNIMPLEMENTED;
return 0;
}
/* Function 29 */
NTSTATUS
__stdcall
NetrLogonGetDomainInfo(
_In_ LOGONSRV_HANDLE ServerName,
_In_opt_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ DWORD Level,
_In_ PNETLOGON_WORKSTATION_INFORMATION WkstaBuffer,
_Out_ PNETLOGON_DOMAIN_INFORMATION DomBuffer)
{
UNIMPLEMENTED;
return 0;
}
/* Function 30 */
NTSTATUS
__stdcall
NetrServerPasswordSet2(
_In_opt_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *AccountName,
_In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ PNL_TRUST_PASSWORD ClearNewPassword)
{
UNIMPLEMENTED;
return 0;
}
/* Function 31 */
NTSTATUS
__stdcall
NetrServerPasswordGet(
_In_opt_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *AccountName,
_In_ NETLOGON_SECURE_CHANNEL_TYPE AccountType,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_Out_ PENCRYPTED_NT_OWF_PASSWORD EncryptedNtOwfPassword)
{
UNIMPLEMENTED;
return 0;
}
/* Function 32 */
NTSTATUS
__stdcall
NetrLogonSendToSam(
_In_opt_ LOGONSRV_HANDLE PrimaryName,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ UCHAR *OpaqueBuffer,
_In_ ULONG OpaqueBufferSize)
{
UNIMPLEMENTED;
return 0;
}
/* Function 33 */
NET_API_STATUS
__stdcall
DsrAddressToSiteNamesW(
_In_opt_ LOGONSRV_HANDLE ComputerName,
_In_ DWORD EntryCount,
_In_ PNL_SOCKET_ADDRESS SocketAddresses,
_Out_ PNL_SITE_NAME_ARRAY *SiteNames)
{
UNIMPLEMENTED;
return 0;
}
/* Function 34 */
NET_API_STATUS
__stdcall
DsrGetDcNameEx2(
_In_opt_ LOGONSRV_HANDLE ComputerName,
_In_opt_ wchar_t *AccountName,
_In_ ULONG AllowableAccountControlBits,
_In_opt_ wchar_t *DomainName,
_In_opt_ GUID *DomainGuid,
_In_opt_ wchar_t *SiteName,
_In_ ULONG Flags,
_Out_ PDOMAIN_CONTROLLER_INFOW *DomainControllerInfo)
{
UNIMPLEMENTED;
return NERR_DCNotFound;
}
/* Function 35 */
NET_API_STATUS
__stdcall
NetrLogonGetTimeServiceParentDomain(
_In_opt_ LOGONSRV_HANDLE ServerName,
_Out_ wchar_t **DomainName,
_Out_ int *PdcSameSite)
{
UNIMPLEMENTED;
return 0;
}
/* Function 36 */
NET_API_STATUS
__stdcall
NetrEnumerateTrustedDomainsEx(
_In_opt_ LOGONSRV_HANDLE ServerName,
_Out_ PNETLOGON_TRUSTED_DOMAIN_ARRAY Domains)
{
UNIMPLEMENTED;
return 0;
}
/* Function 37 */
NET_API_STATUS
__stdcall
DsrAddressToSiteNamesExW(
_In_opt_ LOGONSRV_HANDLE ComputerName,
_In_ DWORD EntryCount,
_In_ PNL_SOCKET_ADDRESS SocketAddresses,
_Out_ PNL_SITE_NAME_EX_ARRAY *SiteNames)
{
UNIMPLEMENTED;
return 0;
}
/* Function 38 */
NET_API_STATUS
__stdcall
DsrGetDcSiteCoverageW(
_In_opt_ LOGONSRV_HANDLE ServerName,
_Out_ PNL_SITE_NAME_ARRAY *SiteNames)
{
UNIMPLEMENTED;
return 0;
}
/* Function 39 */
NTSTATUS
__stdcall
NetrLogonSamLogonEx(
_In_ handle_t ContextHandle,
_In_opt_ wchar_t *LogonServer,
_In_opt_ wchar_t *ComputerName,
_In_ NETLOGON_LOGON_INFO_CLASS LogonLevel,
_In_ PNETLOGON_LEVEL LogonInformation,
_In_ NETLOGON_VALIDATION_INFO_CLASS ValidationLevel,
_Out_ PNETLOGON_VALIDATION ValidationInformation,
_Out_ UCHAR *Authoritative,
_Inout_ ULONG *ExtraFlags)
{
UNIMPLEMENTED;
return 0;
}
/* Function 40 */
NET_API_STATUS
__stdcall
DsrEnumerateDomainTrusts(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_ ULONG Flags,
_Out_ PNETLOGON_TRUSTED_DOMAIN_ARRAY Domains)
{
UNIMPLEMENTED;
return 0;
}
/* Function 41 */
NET_API_STATUS
__stdcall
DsrDeregisterDnsHostRecords(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_opt_ wchar_t *DnsDomainName,
_In_opt_ GUID *DomainGuid,
_In_opt_ GUID *DsaGuid,
_In_ wchar_t *DnsHostName)
{
UNIMPLEMENTED;
return 0;
}
/* Function 42 */
NTSTATUS
__stdcall
NetrServerTrustPasswordsGet(
_In_opt_ LOGONSRV_HANDLE TrustedDcName,
_In_ wchar_t *AccountName,
_In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_Out_ PENCRYPTED_NT_OWF_PASSWORD EncryptedNewOwfPassword,
_Out_ PENCRYPTED_NT_OWF_PASSWORD EncryptedOldOwfPassword)
{
UNIMPLEMENTED;
return 0;
}
/* Function 43 */
NET_API_STATUS
__stdcall
DsrGetForestTrustInformation(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_opt_ wchar_t *TrustedDomainName,
_In_ DWORD Flags,
_Out_ PLSA_FOREST_TRUST_INFORMATION *ForestTrustInfo)
{
UNIMPLEMENTED;
return 0;
}
/* Function 44 */
NTSTATUS
__stdcall
NetrGetForestTrustInformation(
_In_opt_ LOGONSRV_HANDLE ServerName,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ DWORD Flags,
_Out_ PLSA_FOREST_TRUST_INFORMATION *ForestTrustInfo)
{
UNIMPLEMENTED;
return 0;
}
/* Function 45 */
NTSTATUS
__stdcall
NetrLogonSamLogonWithFlags(
_In_opt_ LOGONSRV_HANDLE LogonServer,
_In_opt_ wchar_t *ComputerName,
_In_opt_ PNETLOGON_AUTHENTICATOR Authenticator,
_Inout_opt_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_In_ NETLOGON_LOGON_INFO_CLASS LogonLevel,
_In_ PNETLOGON_LEVEL LogonInformation,
_In_ NETLOGON_VALIDATION_INFO_CLASS ValidationLevel,
_Out_ PNETLOGON_VALIDATION ValidationInformation,
_Out_ UCHAR *Authoritative,
_Inout_ ULONG *ExtraFlags)
{
UNIMPLEMENTED;
return 0;
}
/* Function 46 */
NTSTATUS
__stdcall
NetrServerGetTrustInfo(
_In_opt_ LOGONSRV_HANDLE TrustedDcName,
_In_ wchar_t *AccountName,
_In_ NETLOGON_SECURE_CHANNEL_TYPE SecureChannelType,
_In_ wchar_t *ComputerName,
_In_ PNETLOGON_AUTHENTICATOR Authenticator,
_Out_ PNETLOGON_AUTHENTICATOR ReturnAuthenticator,
_Out_ PENCRYPTED_NT_OWF_PASSWORD EncryptedNewOwfPassword,
_Out_ PENCRYPTED_NT_OWF_PASSWORD EncryptedOldOwfPassword,
_Out_ PNL_GENERIC_RPC_DATA *TrustInfo)
{
UNIMPLEMENTED;
return 0;
}
/* EOF */