Module: wine Branch: master Commit: bc283fcf3d30c709cf064f71461e1b3577c26286 URL: https://source.winehq.org/git/wine.git/?a=commit;h=bc283fcf3d30c709cf064f714...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Wed Feb 28 11:44:49 2018 +0800
adsldp: Implement IADsADSystemInfo::get_ComputerName().
Signed-off-by: Dmitry Timoshkov dmitry@baikal.ru Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/adsldp/Makefile.in | 1 + dlls/adsldp/adsldp.c | 25 +++++++++++++++++++++++-- dlls/adsldp/tests/sysinfo.c | 1 - 3 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/dlls/adsldp/Makefile.in b/dlls/adsldp/Makefile.in index e033d91..c96e264 100644 --- a/dlls/adsldp/Makefile.in +++ b/dlls/adsldp/Makefile.in @@ -1,4 +1,5 @@ MODULE = adsldp.dll +IMPORTS = oleaut32 secur32
C_SRCS = \ adsldp.c diff --git a/dlls/adsldp/adsldp.c b/dlls/adsldp/adsldp.c index 15f1d23..4fc0de4 100644 --- a/dlls/adsldp/adsldp.c +++ b/dlls/adsldp/adsldp.c @@ -28,6 +28,8 @@ #include "objbase.h" #include "rpcproxy.h" #include "iads.h" +#define SECURITY_WIN32 +#include "security.h"
#include "wine/debug.h"
@@ -120,8 +122,27 @@ static HRESULT WINAPI sysinfo_get_UserName(IADsADSystemInfo *iface, BSTR *retval
static HRESULT WINAPI sysinfo_get_ComputerName(IADsADSystemInfo *iface, BSTR *retval) { - FIXME("%p,%p: stub\n", iface, retval); - return E_NOTIMPL; + UINT size; + WCHAR *name; + + TRACE("%p,%p\n", iface, retval); + + size = 0; + GetComputerObjectNameW(NameFullyQualifiedDN, NULL, &size); + if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) + return HRESULT_FROM_WIN32(GetLastError()); + + name = SysAllocStringLen(NULL, size); + if (!name) return E_OUTOFMEMORY; + + if (!GetComputerObjectNameW(NameFullyQualifiedDN, name, &size)) + { + SysFreeString(name); + return HRESULT_FROM_WIN32(GetLastError()); + } + + *retval = name; + return S_OK; }
static HRESULT WINAPI sysinfo_get_SiteName(IADsADSystemInfo *iface, BSTR *retval) diff --git a/dlls/adsldp/tests/sysinfo.c b/dlls/adsldp/tests/sysinfo.c index 73435a6..1e3939f 100644 --- a/dlls/adsldp/tests/sysinfo.c +++ b/dlls/adsldp/tests/sysinfo.c @@ -79,7 +79,6 @@ static void test_ComputerName(void) ok(hr == S_OK, "got %#x\n", hr);
hr = IADsADSystemInfo_get_ComputerName(sysinfo, &bstr); -todo_wine ok(hr == S_OK || hr == HRESULT_FROM_WIN32(ERROR_CANT_ACCESS_DOMAIN_INFO), "got %#x\n", hr); if (hr == S_OK) {