X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=dll%2Fwin32%2Fnetapi32%2Fnetlogon.c;h=98dc5c71632d11379a9af8fc35b2fa9362a6e234;hp=605b3eed7a5eee2d52c5fe314f693cb731660618;hb=adceb3807e3c57ebb60b128816a558785707fd38;hpb=78600cf22304ecf6de01548159cef16931bffd0b diff --git a/dll/win32/netapi32/netlogon.c b/dll/win32/netapi32/netlogon.c index 605b3eed7a5..98dc5c71632 100644 --- a/dll/win32/netapi32/netlogon.c +++ b/dll/win32/netapi32/netlogon.c @@ -32,7 +32,7 @@ DsGetDcNameWithAccountA( DWORD WINAPI DsGetDcNameWithAccountW( - _In_ LPCWSTR ComputerName, + _In_opt_ LPCWSTR ComputerName, _In_opt_ LPCWSTR AccountName, _In_ ULONG AccountControlBits, _In_ LPCWSTR DomainName, @@ -713,7 +713,7 @@ NetGetAnyDCName( _In_opt_ LPCWSTR DomainName, _Out_ LPBYTE *BufPtr) { - NET_API_STATUS status; + NET_API_STATUS Status; TRACE("NetGetAnyDCName(%s, %s, %p)\n", debugstr_w(ServerName), debugstr_w(DomainName), BufPtr); @@ -722,31 +722,65 @@ NetGetAnyDCName( RpcTryExcept { - status = NetrGetAnyDCName((PWSTR)ServerName, + Status = NetrGetAnyDCName((PWSTR)ServerName, (PWSTR)DomainName, (PWSTR*)BufPtr); } RpcExcept(EXCEPTION_EXECUTE_HANDLER) { - status = I_RpcMapWin32Status(RpcExceptionCode()); + Status = I_RpcMapWin32Status(RpcExceptionCode()); } RpcEndExcept; - return status; + return Status; } NET_API_STATUS WINAPI NetGetDCName( - _In_ LPCWSTR servername, - _In_ LPCWSTR domainname, - _Out_ LPBYTE *bufptr) + _In_opt_ LPCWSTR ServerName, + _In_opt_ LPCWSTR DomainName, + _Out_ LPBYTE *BufPtr) { + PDOMAIN_CONTROLLER_INFOW pDomainControllerInfo = NULL; + NET_API_STATUS Status; + FIXME("NetGetDCName(%s, %s, %p)\n", - debugstr_w(servername), debugstr_w(domainname), bufptr); + debugstr_w(ServerName), debugstr_w(DomainName), BufPtr); + + if (ServerName == NULL || *ServerName == UNICODE_NULL) + { + Status = DsGetDcNameWithAccountW(NULL, + NULL, + 0, + DomainName, + NULL, + NULL, + 0, //??? + &pDomainControllerInfo); + if (Status != NERR_Success) + goto done; + + Status = NetApiBufferAllocate((wcslen(pDomainControllerInfo->DomainControllerName) + 1) * sizeof(WCHAR), + (PVOID*)BufPtr); + if (Status != NERR_Success) + goto done; + + wcscpy((PWSTR)*BufPtr, + pDomainControllerInfo->DomainControllerName); + } + else + { + FIXME("Not implemented yet!\n"); + Status = NERR_DCNotFound; + } - return NERR_DCNotFound; +done: + if (pDomainControllerInfo != NULL) + NetApiBufferFree(pDomainControllerInfo); + + return Status; }